diff --git a/.circleci/config.yml b/.circleci/config.yml
index 73fe1f0a37..7d278d1275 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -54,10 +54,9 @@ jobs:
generate_version ./Marlin/src/inc
cat ./Marlin/src/inc/_Version.h
#
- # Backup pins_RAMPS.h
- #
- cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
+ # Back up pins_RAMPS.h
#
+ backup_ramps
env_backup
diff --git a/Marlin/Makefile b/Marlin/Makefile
index acf9c94c71..87331b9de1 100644
--- a/Marlin/Makefile
+++ b/Marlin/Makefile
@@ -122,169 +122,201 @@ ifeq ($(HARDWARE_MOTHERBOARD),0)
#
# MEGA/RAMPS up to 1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),3)
+else ifeq ($(HARDWARE_MOTHERBOARD),1000)
# RAMPS 1.3 (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),33)
+else ifeq ($(HARDWARE_MOTHERBOARD),1010)
# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),34)
+else ifeq ($(HARDWARE_MOTHERBOARD),1011)
# RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),35)
+else ifeq ($(HARDWARE_MOTHERBOARD),1012)
# RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),36)
+else ifeq ($(HARDWARE_MOTHERBOARD),1013)
# RAMPS 1.3 (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),38)
+else ifeq ($(HARDWARE_MOTHERBOARD),1014)
# RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),43)
+else ifeq ($(HARDWARE_MOTHERBOARD),1020)
# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),44)
+else ifeq ($(HARDWARE_MOTHERBOARD),1021)
# RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),45)
+else ifeq ($(HARDWARE_MOTHERBOARD),1022)
# RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),46)
+else ifeq ($(HARDWARE_MOTHERBOARD),1023)
# RAMPS 1.4 (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),48)
+else ifeq ($(HARDWARE_MOTHERBOARD),1024)
# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),143)
+else ifeq ($(HARDWARE_MOTHERBOARD),1030)
# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Bed)
-else ifeq ($(HARDWARE_MOTHERBOARD),144)
+else ifeq ($(HARDWARE_MOTHERBOARD),1031)
# RAMPS Plus 3DYMY (Power outputs: Hotend, Fan0, Fan1)
-else ifeq ($(HARDWARE_MOTHERBOARD),145)
+else ifeq ($(HARDWARE_MOTHERBOARD),1032)
# RAMPS Plus 3DYMY (Power outputs: Hotend0, Hotend1, Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),146)
+else ifeq ($(HARDWARE_MOTHERBOARD),1033)
# RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan)
-else ifeq ($(HARDWARE_MOTHERBOARD),148)
+else ifeq ($(HARDWARE_MOTHERBOARD),1034)
#
# RAMPS Derivatives - ATmega1280, ATmega2560
#
# 3Drag Controller
-else ifeq ($(HARDWARE_MOTHERBOARD),77)
+else ifeq ($(HARDWARE_MOTHERBOARD),1100)
# Velleman K8200 Controller (derived from 3Drag Controller)
-else ifeq ($(HARDWARE_MOTHERBOARD),78)
+else ifeq ($(HARDWARE_MOTHERBOARD),1101)
# Velleman K8400 Controller (derived from 3Drag Controller)
-else ifeq ($(HARDWARE_MOTHERBOARD),79)
+else ifeq ($(HARDWARE_MOTHERBOARD),1102)
# 2PrintBeta BAM&DICE with STK drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),401)
+else ifeq ($(HARDWARE_MOTHERBOARD),1103)
# 2PrintBeta BAM&DICE Due with STK drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),402)
+else ifeq ($(HARDWARE_MOTHERBOARD),1104)
# MKS BASE v1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),40)
+else ifeq ($(HARDWARE_MOTHERBOARD),1105)
+# MKS v1.4 with A4982 stepper drivers
+else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS v1.5 with Allegro A4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),405)
+else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
-else ifeq ($(HARDWARE_MOTHERBOARD),41)
+else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS GEN v1.3 or 1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),47)
+else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS GEN L
-else ifeq ($(HARDWARE_MOTHERBOARD),53)
+else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# zrib V2.0 control board (Chinese knock off RAMPS replica)
-else ifeq ($(HARDWARE_MOTHERBOARD),504)
+else ifeq ($(HARDWARE_MOTHERBOARD),1111)
+# Bigtreetech or BIQU KFB2.0
+else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# Felix 2.0+ Electronics Board (RAMPS like)
-else ifeq ($(HARDWARE_MOTHERBOARD),37)
+else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# Invent-A-Part RigidBoard
-else ifeq ($(HARDWARE_MOTHERBOARD),42)
+else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# Invent-A-Part RigidBoard V2
-else ifeq ($(HARDWARE_MOTHERBOARD),52)
+else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# Sainsmart 2-in-1 board
-else ifeq ($(HARDWARE_MOTHERBOARD),49)
+else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Ultimaker
-else ifeq ($(HARDWARE_MOTHERBOARD),7)
+else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
-else ifeq ($(HARDWARE_MOTHERBOARD),71)
+else ifeq ($(HARDWARE_MOTHERBOARD),1118)
MCU ?= atmega1280
+
# Azteeg X3
-else ifeq ($(HARDWARE_MOTHERBOARD),67)
+else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Azteeg X3 Pro
-else ifeq ($(HARDWARE_MOTHERBOARD),68)
+else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
-else ifeq ($(HARDWARE_MOTHERBOARD),72)
+else ifeq ($(HARDWARE_MOTHERBOARD),1121)
# Rumba
-else ifeq ($(HARDWARE_MOTHERBOARD),80)
+else ifeq ($(HARDWARE_MOTHERBOARD),1122)
# Raise3D Rumba
-else ifeq ($(HARDWARE_MOTHERBOARD),333)
+else ifeq ($(HARDWARE_MOTHERBOARD),1123)
+# Rapide Lite RL200 Rumba
+else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Formbot T-Rex 2 Plus
-else ifeq ($(HARDWARE_MOTHERBOARD),95)
+else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Formbot T-Rex 3
-else ifeq ($(HARDWARE_MOTHERBOARD),96)
+else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Formbot Raptor
-else ifeq ($(HARDWARE_MOTHERBOARD),97)
+else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Formbot Raptor 2
-else ifeq ($(HARDWARE_MOTHERBOARD),98)
+else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# bq ZUM Mega 3D
-else ifeq ($(HARDWARE_MOTHERBOARD),503)
+else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
-else ifeq ($(HARDWARE_MOTHERBOARD),431)
+else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
-else ifeq ($(HARDWARE_MOTHERBOARD),343)
+else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
-else ifeq ($(HARDWARE_MOTHERBOARD),443)
+else ifeq ($(HARDWARE_MOTHERBOARD),1132)
+# TriGorilla Anycubic version 1.4 Rev 1.1
+else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# Creality: Ender-4, CR-8
-else ifeq ($(HARDWARE_MOTHERBOARD),243)
+else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# Creality: CR10S, CR20, CR-X
-else ifeq ($(HARDWARE_MOTHERBOARD),244)
+else ifeq ($(HARDWARE_MOTHERBOARD),1135)
+# Dagoma F5
+else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# Fysetc F6
-else ifeq ($(HARDWARE_MOTHERBOARD),541)
+else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Duplicator i3 Plus
-else ifeq ($(HARDWARE_MOTHERBOARD),31)
+else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# VORON
-else ifeq ($(HARDWARE_MOTHERBOARD),441)
+else ifeq ($(HARDWARE_MOTHERBOARD),1139)
+# TRONXY V3 1.0
+else ifeq ($(HARDWARE_MOTHERBOARD),1140)
+# Z-Bolt X Series
+else ifeq ($(HARDWARE_MOTHERBOARD),1141)
+
+#
+# RAMBo and derivatives
+#
+
+# Rambo
+else ifeq ($(HARDWARE_MOTHERBOARD),1200)
+# Mini-Rambo
+else ifeq ($(HARDWARE_MOTHERBOARD),1201)
+# Mini-Rambo 1.0a
+else ifeq ($(HARDWARE_MOTHERBOARD),1202)
+# Einsy Rambo
+else ifeq ($(HARDWARE_MOTHERBOARD),1203)
+# Einsy Retro
+else ifeq ($(HARDWARE_MOTHERBOARD),1204)
+# abee Scoovo X9H
+else ifeq ($(HARDWARE_MOTHERBOARD),1205)
#
# Other ATmega1280, ATmega2560
#
# Cartesio CN Controls V11
-else ifeq ($(HARDWARE_MOTHERBOARD),111)
+else ifeq ($(HARDWARE_MOTHERBOARD),1300)
# Cartesio CN Controls V12
-else ifeq ($(HARDWARE_MOTHERBOARD),112)
+else ifeq ($(HARDWARE_MOTHERBOARD),1301)
# Cheaptronic v1.0
-else ifeq ($(HARDWARE_MOTHERBOARD),2)
+else ifeq ($(HARDWARE_MOTHERBOARD),1302)
# Cheaptronic v2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),21)
+else ifeq ($(HARDWARE_MOTHERBOARD),1303)
# Makerbot Mightyboard Revision E
-else ifeq ($(HARDWARE_MOTHERBOARD),200)
+else ifeq ($(HARDWARE_MOTHERBOARD),1304)
# Megatronics
-else ifeq ($(HARDWARE_MOTHERBOARD),70)
+else ifeq ($(HARDWARE_MOTHERBOARD),1305)
# Megatronics v2.0
-else ifeq ($(HARDWARE_MOTHERBOARD),701)
+else ifeq ($(HARDWARE_MOTHERBOARD),1306)
# Megatronics v3.0
-else ifeq ($(HARDWARE_MOTHERBOARD),703)
+else ifeq ($(HARDWARE_MOTHERBOARD),1307)
# Megatronics v3.1
-else ifeq ($(HARDWARE_MOTHERBOARD),704)
-# Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),301)
-# Mini-Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),302)
-# Mini-Rambo 1.0a
-else ifeq ($(HARDWARE_MOTHERBOARD),303)
-# Einsy Rambo
-else ifeq ($(HARDWARE_MOTHERBOARD),304)
-# Einsy Retro
-else ifeq ($(HARDWARE_MOTHERBOARD),305)
+else ifeq ($(HARDWARE_MOTHERBOARD),1308)
+# Megatronics v3.2
+else ifeq ($(HARDWARE_MOTHERBOARD),1309)
# Elefu Ra Board (v3)
-else ifeq ($(HARDWARE_MOTHERBOARD),21)
+else ifeq ($(HARDWARE_MOTHERBOARD),1310)
# Leapfrog
-else ifeq ($(HARDWARE_MOTHERBOARD),999)
+else ifeq ($(HARDWARE_MOTHERBOARD),1311)
# Mega controller
-else ifeq ($(HARDWARE_MOTHERBOARD),310)
-# abee Scoovo X9H
-else ifeq ($(HARDWARE_MOTHERBOARD),321)
+else ifeq ($(HARDWARE_MOTHERBOARD),1312)
+# Geeetech GT2560 Rev B for Mecreator2
+else ifeq ($(HARDWARE_MOTHERBOARD),1313)
# Geeetech GT2560 Rev. A
-else ifeq ($(HARDWARE_MOTHERBOARD),74)
+else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev. A+ (with auto level probe)
-else ifeq ($(HARDWARE_MOTHERBOARD),75)
+else ifeq ($(HARDWARE_MOTHERBOARD),1315)
+# Geeetech GT2560 Rev B for A10(M/D)
+else ifeq ($(HARDWARE_MOTHERBOARD),1316)
+# Geeetech GT2560 Rev B for A20(M/D)
+else ifeq ($(HARDWARE_MOTHERBOARD),1317)
+# Einstart retrofit
+else ifeq ($(HARDWARE_MOTHERBOARD),1318)
+# Wanhao 0ne+ i3 Mini
+else ifeq ($(HARDWARE_MOTHERBOARD),1319)
#
# ATmega1281, ATmega2561
#
-else ifeq ($(HARDWARE_MOTHERBOARD),702)
+else ifeq ($(HARDWARE_MOTHERBOARD),1400)
MCU ?= atmega1281
-else ifeq ($(HARDWARE_MOTHERBOARD),25)
+else ifeq ($(HARDWARE_MOTHERBOARD),1410)
MCU ?= atmega1281
#
@@ -292,43 +324,43 @@ else ifeq ($(HARDWARE_MOTHERBOARD),25)
#
# Sanguinololu < 1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),6)
+else ifeq ($(HARDWARE_MOTHERBOARD),1500)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Sanguinololu 1.2 and above
-else ifeq ($(HARDWARE_MOTHERBOARD),62)
+else ifeq ($(HARDWARE_MOTHERBOARD),1501)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Melzi
-else ifeq ($(HARDWARE_MOTHERBOARD),63)
+else ifeq ($(HARDWARE_MOTHERBOARD),1502)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Melzi with ATmega1284 (MaKr3d version)
-else ifeq ($(HARDWARE_MOTHERBOARD),66)
+else ifeq ($(HARDWARE_MOTHERBOARD),1503)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# Melzi Creality3D board (for CR-10 etc)
-else ifeq ($(HARDWARE_MOTHERBOARD),89)
+else ifeq ($(HARDWARE_MOTHERBOARD),1504)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# Melzi Malyan M150 board
-else ifeq ($(HARDWARE_MOTHERBOARD),92)
+else ifeq ($(HARDWARE_MOTHERBOARD),1505)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# Tronxy X5S
-else ifeq ($(HARDWARE_MOTHERBOARD),505)
+else ifeq ($(HARDWARE_MOTHERBOARD),1506)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# STB V1.1
-else ifeq ($(HARDWARE_MOTHERBOARD),64)
+else ifeq ($(HARDWARE_MOTHERBOARD),1507)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# Azteeg X1
-else ifeq ($(HARDWARE_MOTHERBOARD),65)
+else ifeq ($(HARDWARE_MOTHERBOARD),1508)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
# Anet 1.0 (Melzi clone)
-else ifeq ($(HARDWARE_MOTHERBOARD),69)
+else ifeq ($(HARDWARE_MOTHERBOARD),1509)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
@@ -337,51 +369,51 @@ else ifeq ($(HARDWARE_MOTHERBOARD),69)
#
# Gen3 Monolithic Electronics
-else ifeq ($(HARDWARE_MOTHERBOARD),22)
+else ifeq ($(HARDWARE_MOTHERBOARD),1600)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Gen3+
-else ifeq ($(HARDWARE_MOTHERBOARD),9)
+else ifeq ($(HARDWARE_MOTHERBOARD),1601)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Gen6
-else ifeq ($(HARDWARE_MOTHERBOARD),5)
+else ifeq ($(HARDWARE_MOTHERBOARD),1602)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
# Gen6 deluxe
-else ifeq ($(HARDWARE_MOTHERBOARD),51)
+else ifeq ($(HARDWARE_MOTHERBOARD),1603)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
# Gen7 custom (Alfons3 Version)
-else ifeq ($(HARDWARE_MOTHERBOARD),10)
+else ifeq ($(HARDWARE_MOTHERBOARD),1604)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644
F_CPU ?= 20000000
# Gen7 v1.1, v1.2
-else ifeq ($(HARDWARE_MOTHERBOARD),11)
+else ifeq ($(HARDWARE_MOTHERBOARD),1605)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
F_CPU ?= 20000000
# Gen7 v1.3
-else ifeq ($(HARDWARE_MOTHERBOARD),12)
+else ifeq ($(HARDWARE_MOTHERBOARD),1606)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
F_CPU ?= 20000000
# Gen7 v1.4
-else ifeq ($(HARDWARE_MOTHERBOARD),13)
+else ifeq ($(HARDWARE_MOTHERBOARD),1607)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega1284p
F_CPU ?= 20000000
# Alpha OMCA board
-else ifeq ($(HARDWARE_MOTHERBOARD),90)
+else ifeq ($(HARDWARE_MOTHERBOARD),1608)
HARDWARE_VARIANT ?= SanguinoA
MCU ?= atmega644
# Final OMCA board
-else ifeq ($(HARDWARE_MOTHERBOARD),91)
+else ifeq ($(HARDWARE_MOTHERBOARD),1609)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
# Sethi 3D_1
-else ifeq ($(HARDWARE_MOTHERBOARD),20)
+else ifeq ($(HARDWARE_MOTHERBOARD),1610)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
@@ -390,46 +422,46 @@ else ifeq ($(HARDWARE_MOTHERBOARD),20)
#
# Teensylu
-else ifeq ($(HARDWARE_MOTHERBOARD),8)
+else ifeq ($(HARDWARE_MOTHERBOARD),1700)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# Printrboard (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),81)
+else ifeq ($(HARDWARE_MOTHERBOARD),1701)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# Printrboard Revision F (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),811)
+else ifeq ($(HARDWARE_MOTHERBOARD),1702)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# Brainwave (AT90USB646)
-else ifeq ($(HARDWARE_MOTHERBOARD),82)
+else ifeq ($(HARDWARE_MOTHERBOARD),1703)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb646
# Brainwave Pro (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),83)
+else ifeq ($(HARDWARE_MOTHERBOARD),1704)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# SAV Mk-I (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),84)
+else ifeq ($(HARDWARE_MOTHERBOARD),1705)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# Teensy++2.0 (AT90USB1286)
-else ifeq ($(HARDWARE_MOTHERBOARD),85)
+else ifeq ($(HARDWARE_MOTHERBOARD),1706)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# 5DPrint D8 Driver Board
-else ifeq ($(HARDWARE_MOTHERBOARD),88)
+else ifeq ($(HARDWARE_MOTHERBOARD),1707)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
# UltiMachine Archim1 (with DRV8825 drivers)
-else ifeq ($(HARDWARE_MOTHERBOARD),1591)
+else ifeq ($(HARDWARE_MOTHERBOARD),3023)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
IS_MCU = 0
# UltiMachine Archim2 (with TMC2130 drivers)
-else ifeq ($(HARDWARE_MOTHERBOARD),1592)
+else ifeq ($(HARDWARE_MOTHERBOARD),3024)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
@@ -576,7 +608,7 @@ ifeq ($(U8GLIB), 1)
endif
ifeq ($(TMC), 1)
- LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
+ LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
endif
ifeq ($(RELOC_WORKAROUND), 1)
@@ -647,8 +679,8 @@ LIBWARN = -w -Wno-packed-bitfield-compat
CSTANDARD = -std=gnu99
CXXSTANDARD = -std=gnu++11
CDEBUG = -g$(DEBUG)
-CWARN = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas
-CXXWARN = -Wall -Wno-packed-bitfield-compat -Wno-pragmas
+CWARN = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
+CXXWARN = -Wall -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
CTUNING = -fsigned-char -funsigned-bitfields -fpack-struct -fno-exceptions \
-fshort-enums -ffunction-sections -fdata-sections
ifneq ($(HARDWARE_MOTHERBOARD),)
@@ -663,7 +695,7 @@ ASFLAGS := $(CDEFS)
ifeq ($(HARDWARE_VARIANT), archim)
LD_PREFIX = -Wl,--gc-sections,-Map,Marlin.ino.map,--cref,--check-sections,--entry=Reset_Handler,--unresolved-symbols=report-all,--warn-common,--warn-section-align
LD_SUFFIX = $(LDLIBS)
- LDFLAGS = -lm -gcc -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
+ LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
else
LD_PREFIX = -Wl,--gc-sections,--relax
LDFLAGS = -lm
@@ -740,7 +772,7 @@ ifeq (${AVRDUDE_PROGRAMMER}, arduino)
stty -hup < $(UPLOAD_PORT); true
endif
- # Display size of file.
+# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex
ELFSIZE = $(SIZE) $(SIZE_FLAGS) $(BUILD_DIR)/$(TARGET).elf; \
$(SIZE) $(BUILD_DIR)/$(TARGET).elf
@@ -790,7 +822,7 @@ extcoff: $(TARGET).elf
.elf.sym:
$(NM) -n $< > $@
- # Link: create ELF output file from library.
+# Link: create ELF output file from library.
$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h
$(Pecho) " CXX $@"
diff --git a/Marlin/_Bootscreen.h b/Marlin/_Bootscreen.h
new file mode 100644
index 0000000000..d262102e47
--- /dev/null
+++ b/Marlin/_Bootscreen.h
@@ -0,0 +1,93 @@
+/**
+ * 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 .
+ *
+ */
+
+/**
+ * Custom Bitmap for splashscreen
+ *
+ * You may use one of the following tools to generate the C++ bitmap array from
+ * a black and white image:
+ *
+ * - http://www.marlinfw.org/tools/u8glib/converter.html
+ * - http://www.digole.com/tools/PicturetoC_Hex_converter.php
+ */
+
+#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
+#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
+#define CUSTOM_BOOTSCREEN_INVERTED
+
+const unsigned char custom_start_bmp[] PROGMEM = {
+ B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,
+ B11111110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,
+ B11111100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
+ B11111100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11111110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11111100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000000,B00000001,B11110000,B00111111,
+ B11111110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000000,B00000010,B00001000,B00011111,
+ B11111100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000000,B00000101,B00000100,B00111111,
+ B11111110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000000,B00001010,B00000010,B00011111,
+ B11111100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000000,B00010101,B00000001,B00111111,
+ B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
+ B11111100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000000,B00010100,B00000001,B00111111,
+ B11111110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
+ B11111100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B00010101,B00000001,B00111111,
+ B11111110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101010,B00001010,B00000010,B00011111,
+ B11111100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010001,B00000101,B00000100,B00111111,
+ B11111110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100001,B00000010,B10001000,B00011111,
+ B11111100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010001,B00000001,B11110000,B00111111,
+ B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101010,B00000000,B00000000,B00011111,
+ B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00000000,B00000000,B00111111,
+ B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
+ B11111100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
+ B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
+ B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
+ B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
+ B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
+ B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
+ B11100000,B00101110,B11111011,B01111101,B11111011,B11111011,B11001111,B11000001,B11011111,B10111011,B00111110,B11000000,B11100001,B11111110,B00111100,B00011111,
+ B11111101,B11101110,B01111011,B00111001,B11111001,B11110011,B11001111,B10011110,B11011111,B10111011,B00111110,B11011111,B11011110,B11111100,B11011101,B11100111,
+ B11111101,B11101110,B00111011,B10111011,B11111001,B11101011,B11010111,B10111111,B01011111,B10111011,B01011110,B11011111,B11011110,B11111101,B11101101,B11110111,
+ B11111101,B11101110,B10111011,B11010011,B11111010,B11101011,B10110111,B00111111,B11011111,B10111011,B01001110,B11011111,B11011111,B11111111,B11001101,B11110011,
+ B11111101,B11101110,B11011011,B11000111,B11111010,B11101011,B10111011,B01111111,B11000000,B00111011,B01101110,B11000000,B11100011,B11111111,B00011101,B11110011,
+ B11111101,B11101110,B11001011,B11101111,B11111010,B11011011,B10111011,B01111111,B11011111,B10111011,B01100110,B11011111,B11111000,B11111111,B11001101,B11110011,
+ B11111101,B11101110,B11101011,B11101111,B11111011,B01011011,B00000011,B00111111,B01011111,B10111011,B01110110,B11011111,B11111110,B01111111,B11101101,B11110011,
+ B11111101,B11101110,B11110011,B11101111,B11111011,B01011011,B01111001,B10111110,B11011111,B10111011,B01111010,B11011111,B11011110,B01111101,B11101101,B11110111,
+ B11111101,B11101110,B11110011,B11101111,B11111011,B10111010,B11111101,B10011110,B11011111,B10111011,B01111100,B11011111,B11011110,B11111101,B11001101,B11100111,
+ B11111101,B11101110,B11111011,B11101111,B11111011,B10111010,B11111101,B11000001,B11011111,B10111011,B01111110,B11000000,B11100000,B11111110,B00011100,B00011111
+};
diff --git a/Marlin/src/HAL/platforms.h b/Marlin/src/HAL/HAL.h
similarity index 90%
rename from Marlin/src/HAL/platforms.h
rename to Marlin/src/HAL/HAL.h
index 48405f49f7..da779286f5 100644
--- a/Marlin/src/HAL/platforms.h
+++ b/Marlin/src/HAL/HAL.h
@@ -33,10 +33,8 @@
#define HAL_PLATFORM HAL_LPC1768
#elif defined(__STM32F1__) || defined(TARGET_STM32F1)
#define HAL_PLATFORM HAL_STM32F1
-#elif defined(STM32GENERIC) && defined(STM32F4)
- #define HAL_PLATFORM HAL_STM32F4
-#elif defined(STM32GENERIC) && defined(STM32F7)
- #define HAL_PLATFORM HAL_STM32F7
+#elif defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
+ #define HAL_PLATFORM HAL_STM32_F4_F7
#elif defined(ARDUINO_ARCH_STM32)
#define HAL_PLATFORM HAL_STM32
#elif defined(ARDUINO_ARCH_ESP32)
@@ -50,3 +48,5 @@
#define XSTR_(M) #M
#define XSTR(M) XSTR_(M)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL_PLATFORM/NAME)
+
+#include HAL_PATH(.,HAL.h)
diff --git a/Marlin/src/HAL/HAL_AVR/HAL.cpp b/Marlin/src/HAL/HAL_AVR/HAL.cpp
index adc441cb61..226dd9188a 100644
--- a/Marlin/src/HAL/HAL_AVR/HAL.cpp
+++ b/Marlin/src/HAL/HAL_AVR/HAL.cpp
@@ -22,50 +22,18 @@
#ifdef __AVR__
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
//uint8_t MCUSR;
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_init(void) {
// Init Servo Pins
diff --git a/Marlin/src/HAL/HAL_AVR/HAL.h b/Marlin/src/HAL/HAL_AVR/HAL.h
index 38405e9441..8912b24eb4 100644
--- a/Marlin/src/HAL/HAL_AVR/HAL.h
+++ b/Marlin/src/HAL/HAL_AVR/HAL.h
@@ -18,12 +18,6 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include
-
#include "../shared/Marduino.h"
#include "../shared/HAL_SPI.h"
#include "fastio_AVR.h"
@@ -33,18 +27,20 @@
#ifdef USBCON
#include "HardwareSerial.h"
#else
+ #define HardwareSerial_h // Hack to prevent HardwareSerial.h header inclusion
#include "MarlinSerial.h"
#endif
+#include
#include
#include
#include
#include
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
//#define analogInputToDigitalPin(IO) IO
@@ -59,9 +55,9 @@
// On AVR this is in math.h?
//#define square(x) ((x)*(x))
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef uint16_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFF
@@ -71,9 +67,9 @@ typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
//extern uint8_t MCUSR;
@@ -105,9 +101,9 @@ typedef int8_t pin_t;
#endif
#endif
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_init(void);
diff --git a/Marlin/src/HAL/HAL_AVR/HAL_spi_AVR.cpp b/Marlin/src/HAL/HAL_AVR/HAL_spi_AVR.cpp
index 5482523756..82dce1a57d 100644
--- a/Marlin/src/HAL/HAL_AVR/HAL_spi_AVR.cpp
+++ b/Marlin/src/HAL/HAL_AVR/HAL_spi_AVR.cpp
@@ -31,10 +31,6 @@
#ifdef __AVR__
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
void spiBegin(void) {
diff --git a/Marlin/src/HAL/HAL_AVR/MarlinSerial.h b/Marlin/src/HAL/HAL_AVR/MarlinSerial.h
index 8849212d97..f3e2086b2c 100644
--- a/Marlin/src/HAL/HAL_AVR/MarlinSerial.h
+++ b/Marlin/src/HAL/HAL_AVR/MarlinSerial.h
@@ -275,7 +275,6 @@
#endif // !USBCON
-
#ifdef INTERNAL_SERIAL_PORT
template
struct MarlinInternalSerialCfg {
diff --git a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h
index 4446367d15..c313f95ced 100644
--- a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h
+++ b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h
@@ -36,7 +36,6 @@
* (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
*/
-#include "../../core/macros.h"
#include "../../module/endstops.h"
#include
diff --git a/Marlin/src/HAL/HAL_AVR/pinsDebug_plus_70.h b/Marlin/src/HAL/HAL_AVR/pinsDebug_plus_70.h
index 2a2a7bce8a..e5bb82f226 100644
--- a/Marlin/src/HAL/HAL_AVR/pinsDebug_plus_70.h
+++ b/Marlin/src/HAL/HAL_AVR/pinsDebug_plus_70.h
@@ -47,7 +47,7 @@
const uint8_t PROGMEM digital_pin_to_port_PGM_plus_70[] = {
// PORTLIST
- // -------------------------------------------
+ // ------------------------
PE , // PE 0 ** 0 ** USART0_RX
PE , // PE 1 ** 1 ** USART0_TX
PE , // PE 4 ** 2 ** PWM2
@@ -140,7 +140,7 @@ const uint8_t PROGMEM digital_pin_to_port_PGM_plus_70[] = {
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM_plus_70[] = {
// PIN IN PORT
- // -------------------------------------------
+ // ------------------------
_BV( 0 ) , // PE 0 ** 0 ** USART0_RX
_BV( 1 ) , // PE 1 ** 1 ** USART0_TX
_BV( 4 ) , // PE 4 ** 2 ** PWM2
@@ -234,7 +234,7 @@ const uint8_t PROGMEM digital_pin_to_bit_mask_PGM_plus_70[] = {
const uint8_t PROGMEM digital_pin_to_timer_PGM_plus_70[] = {
// TIMERS
- // -------------------------------------------
+ // ------------------------
NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX
NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX
TIMER3B , // PE 4 ** 2 ** PWM2
diff --git a/Marlin/src/HAL/HAL_DUE/HAL.cpp b/Marlin/src/HAL/HAL_DUE/HAL.cpp
index dfe42f6ca3..c98dbbc07c 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL.cpp
+++ b/Marlin/src/HAL/HAL_DUE/HAL.cpp
@@ -25,53 +25,21 @@
#ifdef ARDUINO_ARCH_SAM
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include
#include "usb/usb_task.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
// HAL initialization task
void HAL_init(void) {
@@ -122,9 +90,9 @@ int freeMemory() {
return (int)&free_memory - (heap_end ? heap_end : (int)&_ebss);
}
-// --------------------------------------------------------------------------
+// ------------------------
// ADC
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_adc_start_conversion(const uint8_t adc_pin) {
HAL_adc_result = analogRead(adc_pin);
diff --git a/Marlin/src/HAL/HAL_DUE/HAL.h b/Marlin/src/HAL/HAL_DUE/HAL.h
index 9430769734..40a0241905 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL.h
+++ b/Marlin/src/HAL/HAL_DUE/HAL.h
@@ -68,10 +68,6 @@
#define strncpy_P(dest, src, num) strncpy((dest), (src), (num))
#endif
-#ifndef vsnprintf_P
- #define vsnprintf_P vsnprintf
-#endif
-
// Fix bug in pgm_read_ptr
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*((void**)(addr)))
diff --git a/Marlin/src/HAL/HAL_DUE/HAL_spi_Due.cpp b/Marlin/src/HAL/HAL_DUE/HAL_spi_Due.cpp
index 82eae9b01e..94f90670c0 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL_spi_Due.cpp
+++ b/Marlin/src/HAL/HAL_DUE/HAL_spi_Due.cpp
@@ -37,27 +37,18 @@
#ifdef ARDUINO_ARCH_SAM
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
#include "../shared/Delay.h"
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if EITHER(DUE_SOFTWARE_SPI, FORCE_SOFT_SPI)
- // --------------------------------------------------------------------------
- // software SPI
- // --------------------------------------------------------------------------
+ // ------------------------
+ // Software SPI
+ // ------------------------
// Make sure GCC optimizes this file.
// Note that this line triggers a bug in GCC which is fixed by casting.
@@ -551,9 +542,9 @@
// slave selects controlled by SPI controller
// doesn't support changing SPI speeds for SD card
- // --------------------------------------------------------------------------
+ // ------------------------
// hardware SPI
- // --------------------------------------------------------------------------
+ // ------------------------
static bool spiInitialized = false;
void spiInit(uint8_t spiRate) {
diff --git a/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
index df51c22d60..64ca0ac0f1 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
+++ b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.cpp
@@ -28,36 +28,23 @@
#ifdef ARDUINO_ARCH_SAM
-// --------------------------------------------------------------------------
+// ------------------------
// Includes
-// --------------------------------------------------------------------------
+// ------------------------
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include "HAL_timers_Due.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define NUM_HARDWARE_TIMERS 9
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
{ TC0, 0, TC0_IRQn, 3}, // 0 - [servo timer5]
@@ -71,17 +58,9 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
{ TC2, 2, TC8_IRQn, 0}, // 8
};
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
/*
Timer_clock1: Prescaler 2 -> 42MHz
diff --git a/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.h b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.h
index 2c758f3a11..ba1eccb2f9 100644
--- a/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.h
+++ b/Marlin/src/HAL/HAL_DUE/HAL_timers_Due.h
@@ -26,15 +26,11 @@
* For ARDUINO_ARCH_SAM
*/
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -69,9 +65,9 @@ typedef uint32_t hal_timer_t;
#define HAL_TEMP_TIMER_ISR() void TC4_Handler()
#define HAL_TONE_TIMER_ISR() void TC6_Handler()
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef struct {
Tc *pTimerRegs;
@@ -80,15 +76,15 @@ typedef struct {
uint8_t priority;
} tTimerConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
extern const tTimerConfig TimerConfig[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
diff --git a/Marlin/src/HAL/HAL_DUE/fastio_Due.h b/Marlin/src/HAL/HAL_DUE/fastio_Due.h
index e44d1d1ee6..576e8536b4 100644
--- a/Marlin/src/HAL/HAL_DUE/fastio_Due.h
+++ b/Marlin/src/HAL/HAL_DUE/fastio_Due.h
@@ -39,6 +39,8 @@
#include
+#include "../../inc/MarlinConfigPre.h"
+
/**
* Utility functions
*/
diff --git a/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp
index 4814620b9e..b465fcfa75 100644
--- a/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp
+++ b/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp
@@ -29,7 +29,7 @@
#include "../../inc/MarlinConfig.h"
#include "../shared/persistent_store_api.h"
-#if NONE(I2C_EEPROM, SPI_EEPROM)
+#if !defined(E2END) && NONE(I2C_EEPROM, SPI_EEPROM)
#define E2END 0xFFF // Default to Flash emulated EEPROM size (EepromEmulation_Due.cpp)
#endif
diff --git a/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.c b/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.c
index 0dfcd5ac1f..c714f10653 100644
--- a/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.c
+++ b/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.c
@@ -40,6 +40,7 @@
* \asf_license_stop
*
*/
+
/*
* Support and FAQ: visit Atmel Support
*/
@@ -1904,7 +1905,7 @@ static void udd_ep_in_sent(udd_ep_id_t ep)
ptr_src = &ptr_job->buf[ptr_job->buf_cnt];
nb_remain = ptr_job->buf_size - ptr_job->buf_cnt;
// Fill a bank even if no data (ZLP)
- nb_data = MIN(nb_remain, pkt_size);
+ nb_data = min(nb_remain, pkt_size);
// Modify job information
ptr_job->buf_cnt += nb_data;
ptr_job->buf_load = nb_data;
diff --git a/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.h b/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.h
index 1cd6914f85..97877994bf 100644
--- a/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.h
+++ b/Marlin/src/HAL/HAL_DUE/usb/uotghs_device_due.h
@@ -291,7 +291,7 @@ extern "C" {
//! available greater size, then applies register format of UOTGHS controller
//! for endpoint size bit-field.
#undef udd_format_endpoint_size
-#define udd_format_endpoint_size(size) (32 - clz(((uint32_t)MIN(MAX(size, 8), 1024) << 1) - 1) - 1 - 3)
+#define udd_format_endpoint_size(size) (32 - clz(((uint32_t)min(max(size, 8), 1024) << 1) - 1) - 1 - 3)
//! Configures the selected endpoint size
#define udd_configure_endpoint_size(ep, size) (Wr_bitfield(UOTGHS_ARRAY(UOTGHS_DEVEPTCFG[0], ep), UOTGHS_DEVEPTCFG_EPSIZE_Msk, udd_format_endpoint_size(size)))
//! Gets the configured selected endpoint size
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL.cpp b/Marlin/src/HAL/HAL_ESP32/HAL.cpp
index 299aee46fe..f37a3a4ef8 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL.cpp
@@ -22,10 +22,6 @@
#ifdef ARDUINO_ARCH_ESP32
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "HAL.h"
#include
#include
@@ -48,49 +44,33 @@
#endif
#endif
-// --------------------------------------------------------------------------
+// ------------------------
// Externals
-// --------------------------------------------------------------------------
+// ------------------------
portMUX_TYPE spinlock = portMUX_INITIALIZER_UNLOCKED;
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define V_REF 1100
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
esp_adc_cal_characteristics_t characteristics;
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_init(void) {
i2s_init();
@@ -128,9 +108,9 @@ void _delay_ms(int delay_ms) { delay(delay_ms); }
// return free memory between end of heap (or end bss) and whatever is current
int freeMemory() { return ESP.getFreeHeap(); }
-// --------------------------------------------------------------------------
+// ------------------------
// ADC
-// --------------------------------------------------------------------------
+// ------------------------
#define ADC1_CHANNEL(pin) ADC1_GPIO ## pin ## _CHANNEL
adc1_channel_t get_channel(int pin) {
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL.h b/Marlin/src/HAL/HAL_ESP32/HAL.h
index 0fc1d71bc4..5327a8789e 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL.h
+++ b/Marlin/src/HAL/HAL_ESP32/HAL.h
@@ -24,10 +24,6 @@
#define CPU_32_BIT
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include "../shared/Marduino.h"
@@ -43,9 +39,9 @@
#include "WebSocketSerial.h"
#include "FlushableHardwareSerial.h"
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
extern portMUX_TYPE spinlock;
@@ -69,24 +65,24 @@ extern portMUX_TYPE spinlock;
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef int16_t pin_t;
#define HAL_SERVO_LIB Servo
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
// clear reset reason
void HAL_clear_reset_source (void);
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp
index e702539ca9..5f2dd40e19 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_Servo_ESP32.cpp
@@ -48,8 +48,8 @@ void Servo::detach() { ledcDetachPin(this->pin); }
int Servo::read() { return this->degrees; }
-void Servo::write(int degrees) {
- this->degrees = constrain(degrees, MIN_ANGLE, MAX_ANGLE);
+void Servo::write(int inDegrees) {
+ this->degrees = constrain(inDegrees, MIN_ANGLE, MAX_ANGLE);
int us = map(this->degrees, MIN_ANGLE, MAX_ANGLE, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
int duty = map(us, 0, TAU_USEC, 0, MAX_COMPARE);
ledcWrite(channel, duty);
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp b/Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp
index 67d7e25972..85c0879712 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp
@@ -23,10 +23,6 @@
#ifdef ARDUINO_ARCH_ESP32
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "HAL.h"
#include "../shared/HAL_SPI.h"
#include
@@ -34,28 +30,28 @@
#include "../../core/macros.h"
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
static SPISettings spiConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if ENABLED(SOFTWARE_SPI)
- // --------------------------------------------------------------------------
+ // ------------------------
// Software SPI
- // --------------------------------------------------------------------------
+ // ------------------------
#error "Software SPI not supported for ESP32. Use Hardware SPI."
#else
-// --------------------------------------------------------------------------
+// ------------------------
// Hardware SPI
-// --------------------------------------------------------------------------
+// ------------------------
void spiBegin() {
#if !PIN_EXISTS(SS)
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
index fb95e36e27..27bd42bdf8 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.cpp
@@ -22,10 +22,6 @@
#ifdef ARDUINO_ARCH_ESP32
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include "esp_types.h"
#include "soc/timer_group_struct.h"
@@ -36,28 +32,15 @@
#include "HAL_timers_ESP32.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define NUM_HARDWARE_TIMERS 4
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
static timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
@@ -68,17 +51,9 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
{ TIMER_GROUP_1, TIMER_1, 1, nullptr }, // 3
};
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void IRAM_ATTR timer_group0_isr(void *para) {
const int timer_idx = (int)para;
diff --git a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
index 1a05c04a08..d3da0aef80 100644
--- a/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
+++ b/Marlin/src/HAL/HAL_ESP32/HAL_timers_ESP32.h
@@ -21,10 +21,6 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include "driver/timer.h"
@@ -33,9 +29,9 @@
#include "../../inc/MarlinConfig.h"
#include "../../pins/pins.h"
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
//
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -81,9 +77,9 @@ extern "C" void tempTC_Handler(void);
extern "C" void stepTC_Handler(void);
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef struct {
timer_group_t group;
@@ -92,15 +88,15 @@ typedef struct {
void (*fn)(void);
} tTimerConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
extern const tTimerConfig TimerConfig[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start (const uint8_t timer_num, uint32_t frequency);
void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t count);
diff --git a/Marlin/src/HAL/HAL_LINUX/HAL.cpp b/Marlin/src/HAL/HAL_LINUX/HAL.cpp
index 854d7247f6..0251e2e4e6 100644
--- a/Marlin/src/HAL/HAL_LINUX/HAL.cpp
+++ b/Marlin/src/HAL/HAL_LINUX/HAL.cpp
@@ -47,9 +47,9 @@ int freeMemory() {
return 0;
}
-// --------------------------------------------------------------------------
+// ------------------------
// ADC
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_adc_init(void) {
diff --git a/Marlin/src/HAL/HAL_LINUX/HAL.h b/Marlin/src/HAL/HAL_LINUX/HAL.h
index a87e400394..fbbce96dbd 100644
--- a/Marlin/src/HAL/HAL_LINUX/HAL.h
+++ b/Marlin/src/HAL/HAL_LINUX/HAL.h
@@ -23,10 +23,6 @@
#define CPU_32_BIT
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#define F_CPU 100000000
#define SystemCoreClock F_CPU
#include
diff --git a/Marlin/src/HAL/HAL_LINUX/HAL_timers.h b/Marlin/src/HAL/HAL_LINUX/HAL_timers.h
index b7d0f9b2da..e883cb0150 100644
--- a/Marlin/src/HAL/HAL_LINUX/HAL_timers.h
+++ b/Marlin/src/HAL/HAL_LINUX/HAL_timers.h
@@ -24,15 +24,11 @@
* HAL timers for Linux X86_64
*/
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
diff --git a/Marlin/src/HAL/HAL_LINUX/include/Arduino.h b/Marlin/src/HAL/HAL_LINUX/include/Arduino.h
index f73a9c9161..0d29df466e 100644
--- a/Marlin/src/HAL/HAL_LINUX/include/Arduino.h
+++ b/Marlin/src/HAL/HAL_LINUX/include/Arduino.h
@@ -43,8 +43,6 @@
#define FALLING 0x03
#define RISING 0x04
-#define E2END 0xFFF // EEPROM end address
-
typedef uint8_t byte;
#define PROGMEM
#define PSTR(v) (v)
diff --git a/Marlin/src/HAL/HAL_LINUX/persistent_store_impl.cpp b/Marlin/src/HAL/HAL_LINUX/persistent_store_impl.cpp
index aba664d9f9..7bf00c0610 100644
--- a/Marlin/src/HAL/HAL_LINUX/persistent_store_impl.cpp
+++ b/Marlin/src/HAL/HAL_LINUX/persistent_store_impl.cpp
@@ -29,7 +29,8 @@
#include "../shared/persistent_store_api.h"
#include
-uint8_t buffer[E2END];
+#define LINUX_EEPROM_SIZE (E2END + 1)
+uint8_t buffer[LINUX_EEPROM_SIZE];
char filename[] = "eeprom.dat";
bool PersistentStore::access_start() {
@@ -40,8 +41,8 @@ bool PersistentStore::access_start() {
fseek(eeprom_file, 0L, SEEK_END);
std::size_t file_size = ftell(eeprom_file);
- if (file_size < E2END) {
- memset(buffer + file_size, eeprom_erase_value, E2END - file_size);
+ if (file_size < LINUX_EEPROM_SIZE) {
+ memset(buffer + file_size, eeprom_erase_value, LINUX_EEPROM_SIZE - file_size);
}
else {
fseek(eeprom_file, 0L, SEEK_SET);
diff --git a/Marlin/src/HAL/HAL_LPC1768/HAL.h b/Marlin/src/HAL/HAL_LPC1768/HAL.h
index 32765bd0ea..d96bf7c909 100644
--- a/Marlin/src/HAL/HAL_LPC1768/HAL.h
+++ b/Marlin/src/HAL/HAL_LPC1768/HAL.h
@@ -34,7 +34,7 @@ void HAL_init(void);
#include
#include
-extern "C" volatile millis_t _millis;
+extern "C" volatile uint32_t _millis;
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
diff --git a/Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp b/Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp
index 78f1672dcc..5652db988b 100644
--- a/Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp
+++ b/Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp
@@ -49,15 +49,11 @@
#ifdef TARGET_LPC1768
#include "../../inc/MarlinConfig.h"
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if ENABLED(LPC_SOFTWARE_SPI)
#include "SoftwareSPI.h"
diff --git a/Marlin/src/HAL/HAL_LPC1768/HAL_timers.h b/Marlin/src/HAL/HAL_LPC1768/HAL_timers.h
index 1d68ee8478..29cb8c437e 100644
--- a/Marlin/src/HAL/HAL_LPC1768/HAL_timers.h
+++ b/Marlin/src/HAL/HAL_LPC1768/HAL_timers.h
@@ -25,10 +25,6 @@
* HAL For LPC1768
*/
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include "../../core/macros.h"
@@ -51,9 +47,9 @@
#define SBIT_MR3R 10
#define SBIT_MR3S 11
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define _HAL_TIMER(T) _CAT(LPC_TIM, T)
#define _HAL_TIMER_IRQ(T) TIMER##T##_IRQn
@@ -95,9 +91,9 @@ typedef uint32_t hal_timer_t;
#define STEP_TIMER _HAL_TIMER(STEP_TIMER_NUM)
#define TEMP_TIMER _HAL_TIMER(TEMP_TIMER_NUM)
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_init(void);
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
diff --git a/Marlin/src/HAL/HAL_LPC1768/main.cpp b/Marlin/src/HAL/HAL_LPC1768/main.cpp
index 3f22b0d36d..03b8d419b2 100644
--- a/Marlin/src/HAL/HAL_LPC1768/main.cpp
+++ b/Marlin/src/HAL/HAL_LPC1768/main.cpp
@@ -44,9 +44,7 @@ extern uint32_t MSC_SD_Init(uint8_t pdrv);
extern "C" int isLPC1769();
extern "C" void disk_timerproc(void);
-void SysTick_Callback() {
- disk_timerproc();
-}
+void SysTick_Callback() { disk_timerproc(); }
void HAL_init(void) {
@@ -99,6 +97,26 @@ void HAL_init(void) {
OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH);
#endif
+ #ifdef LPC1768_ENABLE_CLKOUT_12M
+ /**
+ * CLKOUTCFG register
+ * bit 8 (CLKOUT_EN) = enables CLKOUT signal. Disabled for now to prevent glitch when enabling GPIO.
+ * bits 7:4 (CLKOUTDIV) = set to 0 for divider setting of /1
+ * bits 3:0 (CLKOUTSEL) = set to 1 to select main crystal oscillator as CLKOUT source
+ */
+ LPC_SC->CLKOUTCFG = (0<<8)|(0<<4)|(1<<0);
+ // set P1.27 pin to function 01 (CLKOUT)
+ PINSEL_CFG_Type PinCfg;
+ PinCfg.Portnum = 1;
+ PinCfg.Pinnum = 27;
+ PinCfg.Funcnum = 1; // function 01 (CLKOUT)
+ PinCfg.OpenDrain = 0; // not open drain
+ PinCfg.Pinmode = 2; // no pull-up/pull-down
+ PINSEL_ConfigPin(&PinCfg);
+ // now set CLKOUT_EN bit
+ LPC_SC->CLKOUTCFG |= (1<<8);
+ #endif
+
USB_Init(); // USB Initialization
USB_Connect(FALSE); // USB clear connection
delay(1000); // Give OS time to notice
diff --git a/Marlin/src/HAL/HAL_STM32/HAL.cpp b/Marlin/src/HAL/HAL_STM32/HAL.cpp
index 8eb3c588f6..dc21069dba 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL.cpp
+++ b/Marlin/src/HAL/HAL_STM32/HAL.cpp
@@ -28,54 +28,25 @@
#include "../../inc/MarlinConfig.h"
#include "../shared/Delay.h"
-#if ENABLED(EEPROM_EMULATED_WITH_SRAM)
+#if ENABLED(SRAM_EEPROM_EMULATION)
#if STM32F7xx
#include "stm32f7xx_ll_pwr.h"
#elif STM32F4xx
#include "stm32f4xx_ll_pwr.h"
#else
- #error "EEPROM_EMULATED_WITH_SRAM is currently only supported for STM32F4xx and STM32F7xx"
+ #error "SRAM_EEPROM_EMULATION is currently only supported for STM32F4xx and STM32F7xx"
#endif
#endif
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
-
+// ------------------------
// Needed for DELAY_NS() / DELAY_US() on CORTEX-M7
#if (defined(__arm__) || defined(__thumb__)) && __CORTEX_M == 7
@@ -100,7 +71,7 @@ void HAL_init(void) {
OUT_WRITE(LED_PIN, LOW);
#endif
- #if ENABLED(EEPROM_EMULATED_WITH_SRAM)
+ #if ENABLED(SRAM_EEPROM_EMULATION)
// Enable access to backup SRAM
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWR_EnableBkUpAccess();
@@ -129,9 +100,9 @@ extern "C" {
extern unsigned int _ebss; // end of bss section
}
-// --------------------------------------------------------------------------
+// ------------------------
// ADC
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_adc_start_conversion(const uint8_t adc_pin) {
HAL_adc_result = analogRead(adc_pin);
diff --git a/Marlin/src/HAL/HAL_STM32/HAL.h b/Marlin/src/HAL/HAL_STM32/HAL.h
index a7d607e764..051cab46d9 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32/HAL.h
@@ -24,10 +24,6 @@
#define CPU_32_BIT
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../core/macros.h"
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
@@ -43,9 +39,9 @@
#include
#endif
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#if SERIAL_PORT == 0
#error "Serial port 0 does not exist"
@@ -128,24 +124,24 @@
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef int16_t pin_t;
#define HAL_SERVO_LIB libServo
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
// Memory related
#define __bss_end __bss_end__
diff --git a/Marlin/src/HAL/HAL_STM32/HAL_spi_STM32.cpp b/Marlin/src/HAL/HAL_STM32/HAL_spi_STM32.cpp
index cde28e7e14..b2df7a16a7 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL_spi_STM32.cpp
+++ b/Marlin/src/HAL/HAL_STM32/HAL_spi_STM32.cpp
@@ -23,35 +23,31 @@
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
static SPISettings spiConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if ENABLED(SOFTWARE_SPI)
- // --------------------------------------------------------------------------
+ // ------------------------
// Software SPI
- // --------------------------------------------------------------------------
+ // ------------------------
#error "Software SPI not supported for STM32. Use Hardware SPI."
#else
-// --------------------------------------------------------------------------
+// ------------------------
// Hardware SPI
-// --------------------------------------------------------------------------
+// ------------------------
/**
* VGPV SPI speed start and PCLK2/2, by default 108/2 = 54Mhz
diff --git a/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.cpp b/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.cpp
index f309b43f3a..7a2de123d2 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.cpp
+++ b/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.cpp
@@ -19,53 +19,30 @@
* along with this program. If not, see .
*
*/
+
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "HAL.h"
#include "HAL_timers_STM32.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define NUM_HARDWARE_TIMERS 2
//#define PRESCALER 1
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
-stm32f4_timer_t TimerHandle[NUM_HARDWARE_TIMERS];
+stm32_timer_t TimerHandle[NUM_HARDWARE_TIMERS];
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
bool timers_initialized[NUM_HARDWARE_TIMERS] = { false };
diff --git a/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.h b/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.h
index 8cdea0a81e..aefe880b4e 100644
--- a/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.h
+++ b/Marlin/src/HAL/HAL_STM32/HAL_timers_STM32.h
@@ -21,16 +21,12 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include "../../inc/MarlinConfig.h"
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -128,21 +124,21 @@ extern void Temp_Handler(stimer_t *htim);
#define HAL_STEP_TIMER_ISR() void Step_Handler(stimer_t *htim)
#define HAL_TEMP_TIMER_ISR() void Temp_Handler(stimer_t *htim)
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
-typedef stimer_t stm32f4_timer_t;
+typedef stimer_t stm32_timer_t;
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
-extern stm32f4_timer_t TimerHandle[];
+extern stm32_timer_t TimerHandle[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_enable_interrupt(const uint8_t timer_num);
diff --git a/Marlin/src/HAL/HAL_STM32/fastio_STM32.h b/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
index fd97fd206c..e4bac7a061 100644
--- a/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
+++ b/Marlin/src/HAL/HAL_STM32/fastio_STM32.h
@@ -27,21 +27,21 @@
* These use GPIO register access for fast port manipulation.
*/
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
extern GPIO_TypeDef * FastIOPortMap[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void FastIO_init(); // Must be called before using fast io macros
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define _BV32(b) (1UL << (b))
diff --git a/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp b/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp
index 1161db2cb9..0b95557f02 100644
--- a/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp
+++ b/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp
@@ -28,20 +28,20 @@
#include "../shared/persistent_store_api.h"
-#if NONE(EEPROM_EMULATED_WITH_SRAM, SPI_EEPROM, I2C_EEPROM)
+#if NONE(SRAM_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
#include
static bool eeprom_data_written = false;
#endif
bool PersistentStore::access_start() {
- #if NONE(EEPROM_EMULATED_WITH_SRAM, SPI_EEPROM, I2C_EEPROM)
+ #if NONE(SRAM_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
eeprom_buffer_fill();
#endif
return true;
}
bool PersistentStore::access_finish() {
- #if NONE(EEPROM_EMULATED_WITH_SRAM, SPI_EEPROM, I2C_EEPROM)
+ #if NONE(SRAM_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
if (eeprom_data_written) {
eeprom_buffer_flush();
eeprom_data_written = false;
@@ -66,7 +66,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return true;
}
}
- #elif DISABLED(EEPROM_EMULATED_WITH_SRAM)
+ #elif DISABLED(SRAM_EEPROM_EMULATION)
eeprom_buffered_write_byte(pos, v);
#else
*(__IO uint8_t *)(BKPSRAM_BASE + (uint8_t * const)pos) = v;
@@ -76,20 +76,20 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
pos++;
value++;
};
- #if NONE(EEPROM_EMULATED_WITH_SRAM, SPI_EEPROM, I2C_EEPROM)
+ #if NONE(SRAM_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
eeprom_data_written = true;
#endif
return false;
}
-bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing) {
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
// Read from either external EEPROM, program flash or Backup SRAM
const uint8_t c = (
#if EITHER(SPI_EEPROM, I2C_EEPROM)
eeprom_read_byte((uint8_t*)pos)
- #elif DISABLED(EEPROM_EMULATED_WITH_SRAM)
+ #elif DISABLED(SRAM_EEPROM_EMULATION)
eeprom_buffered_read_byte(pos)
#else
(*(__IO uint8_t *)(BKPSRAM_BASE + ((uint8_t*)pos)))
@@ -107,7 +107,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
size_t PersistentStore::capacity() {
#if EITHER(SPI_EEPROM, I2C_EEPROM)
return E2END + 1;
- #elif DISABLED(EEPROM_EMULATED_WITH_SRAM)
+ #elif DISABLED(SRAM_EEPROM_EMULATION)
return E2END + 1;
#else
return 4096; // 4kB
diff --git a/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32GENERIC.h b/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32GENERIC.h
index a323f7366b..063eeb6655 100644
--- a/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32GENERIC.h
+++ b/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32GENERIC.h
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* 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
@@ -30,10 +30,8 @@
#ifdef __STM32F1__
#include "../HAL_STM32F1/fastio_STM32F1.h"
-#elif defined(STM32F4)
- #include "../HAL_STM32F4/fastio_STM32F4.h"
-#elif defined(STM32F7)
- #include "../HAL_STM32F7/fastio_STM32F7.h"
+#elif defined(STM32F4) || defined(STM32F7)
+ #include "../HAL_STM32_F4_F7/fastio_STM32_F4_F7.h"
#endif
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS];
@@ -48,7 +46,7 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS];
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3hd "), int16_t(p)); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PORT(p) print_port(p)
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
-#define MULTI_NAME_PAD 20 // space needed to be pretty if not first name assigned to a pin
+#define MULTI_NAME_PAD 21 // space needed to be pretty if not first name assigned to a pin
// pins that will cause hang/reset/disconnect in M43 Toggle and Watch utilities
#ifndef M43_NEVER_TOUCH
@@ -97,7 +95,7 @@ static inline void pwm_details(const pin_t pin) {
timer_dev * const tdev = PIN_MAP[pin].timer_device;
const uint8_t channel = PIN_MAP[pin].timer_channel;
const char num = (
- #ifdef STM32_HIGH_DENSITY
+ #if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY)
tdev == &timer8 ? '8' :
tdev == &timer5 ? '5' :
#endif
@@ -114,22 +112,8 @@ static inline void pwm_details(const pin_t pin) {
static inline void print_port(pin_t pin) {
const char port = 'A' + char(pin >> 4); // pin div 16
- /* seems not to be required for our devices
- gpio_dev * const gp = PIN_MAP[pin].gpio_device;
- const char port = (
- #if STM32_NR_GPIO_PORTS > 4
- gp == &gpiog ? 'G' :
- gp == &gpiof ? 'F' :
- gp == &gpioe ? 'E' :
- #endif
- gp == &gpiod ? 'D' :
- gp == &gpioc ? 'C' :
- gp == &gpiob ? 'B' :
- gp == &gpioa ? 'A' : '?'
- );
- */
const int16_t gbit = PIN_MAP[pin].gpio_bit;
- char buffer[6];
+ char buffer[8];
sprintf_P(buffer, PSTR("P%c%hd "), port, gbit);
if (gbit < 10) SERIAL_CHAR(' ');
SERIAL_ECHO(buffer);
diff --git a/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32duino.h b/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32duino.h
index 2e003ea567..c31f9b009c 100644
--- a/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32duino.h
+++ b/Marlin/src/HAL/HAL_STM32/pinsDebug_STM32duino.h
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* 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
diff --git a/Marlin/src/HAL/HAL_STM32/watchdog_STM32.cpp b/Marlin/src/HAL/HAL_STM32/watchdog_STM32.cpp
index 6f8b070e7b..ae9f1e3583 100644
--- a/Marlin/src/HAL/HAL_STM32/watchdog_STM32.cpp
+++ b/Marlin/src/HAL/HAL_STM32/watchdog_STM32.cpp
@@ -22,10 +22,12 @@
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
-#include "../../inc/MarlinConfig.h"
+#include "../../inc/MarlinConfigPre.h"
#if ENABLED(USE_WATCHDOG)
+ #include "../../inc/MarlinConfig.h"
+
#include "watchdog_STM32.h"
#include
@@ -33,7 +35,7 @@
void watchdog_reset() {
IWatchdog.reload();
- #if PIN_EXISTS(LED)
+ #if DISABLED(PINS_DEBUGGING) && PIN_EXISTS(LED)
TOGGLE(LED_PIN); // heartbeat indicator
#endif
}
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
index 16a2a012b6..69ac127a4e 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL.cpp
@@ -27,22 +27,14 @@
#ifdef __STM32F1__
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "HAL.h"
#include "../../inc/MarlinConfig.h"
#include
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
#define __I
#define __IO volatile
@@ -70,13 +62,10 @@
__IO uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */
} SCB_Type;
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
+
#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */
#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */
@@ -89,18 +78,19 @@
#define SCB_AIRCR_PRIGROUP_Pos 8 /*!< SCB AIRCR: PRIGROUP Position */
#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
+
#ifdef SERIAL_USB
USBSerial SerialUSB;
#endif
uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
STM32ADC adc(ADC1);
uint8_t adc_pins[] = {
@@ -166,13 +156,13 @@ enum TEMP_PINS : char {
uint16_t HAL_adc_results[ADC_PIN_COUNT];
-// --------------------------------------------------------------------------
+// ------------------------
// Function prototypes
-// --------------------------------------------------------------------------
+// ------------------------
-// --------------------------------------------------------------------------
+// ------------------------
// Private functions
-// --------------------------------------------------------------------------
+// ------------------------
static void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) {
uint32_t reg_value;
uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07); /* only values 0..7 are used */
@@ -185,9 +175,9 @@ static void NVIC_SetPriorityGrouping(uint32_t PriorityGroup) {
SCB->AIRCR = reg_value;
}
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
//
// Leave PA11/PA12 intact if USBSerial is not used
@@ -263,9 +253,9 @@ extern "C" {
}
*/
-// --------------------------------------------------------------------------
+// ------------------------
// ADC
-// --------------------------------------------------------------------------
+// ------------------------
// Init the AD in continuous capture mode
void HAL_adc_init(void) {
// configure the ADC
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL.h b/Marlin/src/HAL/HAL_STM32F1/HAL.h
index 3f33e3ec1a..f0a4883504 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL.h
@@ -28,14 +28,6 @@
#define CPU_32_BIT
-#ifndef vsnprintf_P
- #define vsnprintf_P vsnprintf
-#endif
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../core/macros.h"
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
@@ -51,9 +43,9 @@
#include "../../inc/MarlinConfigPre.h"
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#ifdef SERIAL_USB
#define UsbSerial Serial
@@ -156,22 +148,22 @@ void HAL_init(void);
#define RST_SOFTWARE 32
#define RST_BACKUP 64
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef int8_t pin_t;
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
// Disable interrupts
#define cli() noInterrupts()
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
index 4f90b26e68..24cf6c7676 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp
@@ -124,6 +124,8 @@ bool SDIO_ReadBlock(uint32_t blockAddress, uint8_t *data) {
return false;
}
+uint32_t millis();
+
bool SDIO_WriteBlock(uint32_t blockAddress, const uint8_t *data) {
if (SDIO_GetCardState() != SDIO_CARD_TRANSFER) return false;
if (blockAddress >= SdCard.LogBlockNbr) return false;
@@ -165,9 +167,9 @@ bool SDIO_WriteBlock(uint32_t blockAddress, const uint8_t *data) {
inline uint32_t SDIO_GetCardState(void) { return SDIO_CmdSendStatus(SdCard.RelCardAdd << 16U) ? (SDIO_GetResponse(SDIO_RESP1) >> 9U) & 0x0FU : SDIO_CARD_ERROR; }
-// --------------------------------------------------------------------------
+// ------------------------
// SD Commands and Responses
-// --------------------------------------------------------------------------
+// ------------------------
void SDIO_SendCommand(uint16_t command, uint32_t argument) { SDIO->ARG = argument; SDIO->CMD = (uint32_t)(SDIO_CMD_CPSMEN | command); }
uint8_t SDIO_GetCommandResponse(void) { return (uint8_t)(SDIO->RESPCMD); }
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.h b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.h
index 2d4eb5b879..c69f0872bb 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.h
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.h
@@ -21,18 +21,14 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../shared/Marduino.h"
#include "libmaple/sdio.h"
#include "libmaple/dma.h"
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define SDMMC_CMD_GO_IDLE_STATE ((uint8_t)0) /* Resets the SD memory card. */
#define SDMMC_CMD_ALL_SEND_CID ((uint8_t)2) /* Asks any card connected to the host to send the CID numbers on the CMD line. */
@@ -106,9 +102,9 @@
#define SDIO_CLOCK 18000000 /* 18 MHz */
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef struct {
uint32_t CardType; // Card Type
@@ -121,9 +117,9 @@ typedef struct {
uint32_t LogBlockSize; // Logical block size in bytes
} SDIO_CardInfoTypeDef;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
inline uint32_t SDIO_GetCardState(void);
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_spi_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_spi_STM32F1.cpp
index a43a1b4194..21979c1052 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_spi_STM32F1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_spi_STM32F1.cpp
@@ -32,34 +32,25 @@
#ifdef __STM32F1__
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../../inc/MarlinConfig.h"
#include
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if ENABLED(SOFTWARE_SPI)
- // --------------------------------------------------------------------------
+ // ------------------------
// Software SPI
- // --------------------------------------------------------------------------
+ // ------------------------
#error "Software SPI not supported for STM32F1. Use hardware SPI."
#else
-// --------------------------------------------------------------------------
+// ------------------------
// Hardware SPI
-// --------------------------------------------------------------------------
+// ------------------------
/**
* VGPV SPI speed start and F_CPU/2, by default 72/2 = 36Mhz
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.cpp
index 8d071dd9c0..5313064a3b 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.cpp
@@ -26,45 +26,17 @@
#ifdef __STM32F1__
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "HAL.h"
#include "HAL_timers_STM32F1.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
/**
* Timer_clock1: Prescaler 2 -> 36 MHz
diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.h b/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.h
index 39241bcb8a..c114fe5ed4 100644
--- a/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.h
+++ b/Marlin/src/HAL/HAL_STM32F1/HAL_timers_STM32F1.h
@@ -25,16 +25,12 @@
* HAL for stm32duino.com based on Libmaple and compatible (STM32F1)
*/
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
/**
* TODO: Check and confirm what timer we will use for each Temps and stepper driving.
@@ -96,21 +92,16 @@ timer_dev* get_timer_dev(int number);
extern "C" void tempTC_Handler(void);
extern "C" void stepTC_Handler(void);
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
-/*
-static HardwareTimer StepperTimer(STEP_TIMER_NUM);
-static HardwareTimer TempTimer(TEMP_TIMER_NUM);
-*/
-// --------------------------------------------------------------------------
+// ------------------------
+
+//static HardwareTimer StepperTimer(STEP_TIMER_NUM);
+//static HardwareTimer TempTimer(TEMP_TIMER_NUM);
+
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_enable_interrupt(const uint8_t timer_num);
diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_eeprom.cpp
index b4ef57e1da..b1b50a39e1 100644
--- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_eeprom.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_eeprom.cpp
@@ -49,10 +49,10 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
-bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool set/*=true*/) {
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
- if (set && value) *value = c;
+ if (writing && value) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
index 3244093577..454dccfae3 100644
--- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
@@ -33,7 +33,7 @@
#include "../shared/persistent_store_api.h"
#ifndef E2END
- #define E2END 4095
+ #define E2END 0xFFF // 4KB
#endif
#define HAL_STM32F1_EEPROM_SIZE (E2END + 1)
diff --git a/Marlin/src/HAL/HAL_STM32F1/watchdog_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/watchdog_STM32F1.cpp
index 69dca32680..62e4d077eb 100644
--- a/Marlin/src/HAL/HAL_STM32F1/watchdog_STM32F1.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/watchdog_STM32F1.cpp
@@ -56,5 +56,4 @@ void watchdog_init(void) {
}
#endif // USE_WATCHDOG
-
#endif // __STM32F1__
diff --git a/Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.cpp b/Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.cpp
deleted file mode 100644
index 8bae46777d..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.cpp
+++ /dev/null
@@ -1,569 +0,0 @@
-/**
- ******************************************************************************
- * @file EEPROM/EEPROM_Emulation/src/eeprom.c
- * @author MCD Application Team
- * @version V1.2.6
- * @date 04-November-2016
- * @brief This file provides all the EEPROM emulation firmware functions.
- ******************************************************************************
- * @attention
- *
- * © Copyright © 2016 STMicroelectronics International N.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted, provided that the following conditions are met:
- *
- * 1. Redistribution of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of other
- * contributors to this software may be used to endorse or promote products
- * derived from this software without specific written permission.
- * 4. This software, including modifications and/or derivative works of this
- * software, must execute solely and exclusively on microcontroller or
- * microprocessor devices manufactured by or for STMicroelectronics.
- * 5. Redistribution and use of this software other than as permitted under
- * this license is void and will automatically terminate your rights under
- * this license.
- *
- * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
- * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
- * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- ******************************************************************************
- */
-/** @addtogroup EEPROM_Emulation
- * @{
- */
-#if defined(STM32GENERIC) && (defined(STM32F4))
-
-/* Includes ------------------------------------------------------------------*/
-#include "eeprom_emul.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-
-/* Global variable used to store variable value in read sequence */
-uint16_t DataVar = 0;
-
-/* Virtual address defined by the user: 0xFFFF value is prohibited */
-uint16_t VirtAddVarTab[NB_OF_VAR];
-
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-static HAL_StatusTypeDef EE_Format(void);
-static uint16_t EE_FindValidPage(uint8_t Operation);
-static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Data);
-static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data);
-static uint16_t EE_VerifyPageFullyErased(uint32_t Address);
-
-/**
- * @brief Restore the pages to a known good state in case of page's status
- * corruption after a power loss.
- * @param None.
- * @retval - Flash error code: on write Flash error
- * - FLASH_COMPLETE: on success
- */
-uint16_t EE_Initialize(void) {
- uint16_t PageStatus0 = 6, PageStatus1 = 6;
- uint16_t VarIdx = 0;
- uint16_t EepromStatus = 0, ReadStatus = 0;
- int16_t x = -1;
- HAL_StatusTypeDef FlashStatus;
- uint32_t SectorError = 0;
- FLASH_EraseInitTypeDef pEraseInit;
-
-
- /* Get Page0 status */
- PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
- /* Get Page1 status */
- PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
-
- pEraseInit.TypeErase = TYPEERASE_SECTORS;
- pEraseInit.Sector = PAGE0_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
-
- /* Check for invalid header states and repair if necessary */
- switch (PageStatus0) {
- case ERASED:
- if (PageStatus1 == VALID_PAGE) { /* Page0 erased, Page1 valid */
- /* Erase Page0 */
- if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- }
- else if (PageStatus1 == RECEIVE_DATA) { /* Page0 erased, Page1 receive */
- /* Erase Page0 */
- if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- /* Mark Page1 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE1_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- else { /* First EEPROM access (Page0&1 are erased) or invalid state -> format EEPROM */
- /* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- break;
-
- case RECEIVE_DATA:
- if (PageStatus1 == VALID_PAGE) { /* Page0 receive, Page1 valid */
- /* Transfer data from Page1 to Page0 */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
- if (( *(__IO uint16_t*)(PAGE0_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
- x = VarIdx;
- if (VarIdx != x) {
- /* Read the last variables' updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
- /* In case variable corresponding to the virtual address was found */
- if (ReadStatus != 0x1) {
- /* Transfer the variable to the Page0 */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
- /* If program operation was failed, a Flash error code is returned */
- if (EepromStatus != HAL_OK) return EepromStatus;
- }
- }
- }
- /* Mark Page0 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- pEraseInit.Sector = PAGE1_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
- /* Erase Page1 */
- if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- }
- else if (PageStatus1 == ERASED) { /* Page0 receive, Page1 erased */
- pEraseInit.Sector = PAGE1_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
- /* Erase Page1 */
- if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- /* Mark Page0 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- else { /* Invalid state -> format eeprom */
- /* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- break;
-
- case VALID_PAGE:
- if (PageStatus1 == VALID_PAGE) { /* Invalid state -> format eeprom */
- /* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- else if (PageStatus1 == ERASED) { /* Page0 valid, Page1 erased */
- pEraseInit.Sector = PAGE1_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
- /* Erase Page1 */
- if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- }
- else { /* Page0 valid, Page1 receive */
- /* Transfer data from Page0 to Page1 */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
- if ((*(__IO uint16_t*)(PAGE1_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
- x = VarIdx;
-
- if (VarIdx != x) {
- /* Read the last variables' updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
- /* In case variable corresponding to the virtual address was found */
- if (ReadStatus != 0x1) {
- /* Transfer the variable to the Page1 */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
- /* If program operation was failed, a Flash error code is returned */
- if (EepromStatus != HAL_OK) return EepromStatus;
- }
- }
- }
- /* Mark Page1 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE1_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- pEraseInit.Sector = PAGE0_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
- /* Erase Page0 */
- if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- }
- break;
-
- default: /* Any other state -> format eeprom */
- /* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- break;
- }
-
- return HAL_OK;
-}
-
-/**
- * @brief Verify if specified page is fully erased.
- * @param Address: page address
- * This parameter can be one of the following values:
- * @arg PAGE0_BASE_ADDRESS: Page0 base address
- * @arg PAGE1_BASE_ADDRESS: Page1 base address
- * @retval page fully erased status:
- * - 0: if Page not erased
- * - 1: if Page erased
- */
-uint16_t EE_VerifyPageFullyErased(uint32_t Address) {
- uint32_t ReadStatus = 1;
- uint16_t AddressValue = 0x5555;
- /* Check each active page address starting from end */
- while (Address <= PAGE0_END_ADDRESS) {
- /* Get the current location content to be compared with virtual address */
- AddressValue = (*(__IO uint16_t*)Address);
- /* Compare the read address with the virtual address */
- if (AddressValue != ERASED) {
- /* In case variable value is read, reset ReadStatus flag */
- ReadStatus = 0;
- break;
- }
- /* Next address location */
- Address += 4;
- }
- /* Return ReadStatus value: (0: Page not erased, 1: Sector erased) */
- return ReadStatus;
-}
-
-/**
- * @brief Returns the last stored variable data, if found, which correspond to
- * the passed virtual address
- * @param VirtAddress: Variable virtual address
- * @param Data: Global variable contains the read variable value
- * @retval Success or error status:
- * - 0: if variable was found
- * - 1: if the variable was not found
- * - NO_VALID_PAGE: if no valid page was found.
- */
-uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data) {
- uint16_t ValidPage = PAGE0;
- uint16_t AddressValue = 0x5555, ReadStatus = 1;
- uint32_t Address = EEPROM_START_ADDRESS, PageStartAddress = EEPROM_START_ADDRESS;
-
- /* Get active Page for read operation */
- ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
-
- /* Check if there is no valid page */
- if (ValidPage == NO_VALID_PAGE) return NO_VALID_PAGE;
-
- /* Get the valid Page start Address */
- PageStartAddress = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
-
- /* Get the valid Page end Address */
- Address = (uint32_t)((EEPROM_START_ADDRESS - 2) + (uint32_t)((1 + ValidPage) * PAGE_SIZE));
-
- /* Check each active page address starting from end */
- while (Address > (PageStartAddress + 2)) {
- /* Get the current location content to be compared with virtual address */
- AddressValue = (*(__IO uint16_t*)Address);
-
- /* Compare the read address with the virtual address */
- if (AddressValue == VirtAddress) {
- /* Get content of Address-2 which is variable value */
- *Data = (*(__IO uint16_t*)(Address - 2));
- /* In case variable value is read, reset ReadStatus flag */
- ReadStatus = 0;
- break;
- }
- else /* Next address location */
- Address -= 4;
- }
- /* Return ReadStatus value: (0: variable exist, 1: variable doesn't exist) */
- return ReadStatus;
-}
-
-/**
- * @brief Writes/upadtes variable data in EEPROM.
- * @param VirtAddress: Variable virtual address
- * @param Data: 16 bit data to be written
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - PAGE_FULL: if valid page is full
- * - NO_VALID_PAGE: if no valid page was found
- * - Flash error code: on write Flash error
- */
-uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data) {
- /* Write the variable virtual address and value in the EEPROM */
- uint16_t Status = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
-
- /* In case the EEPROM active page is full */
- if (Status == PAGE_FULL) /* Perform Page transfer */
- Status = EE_PageTransfer(VirtAddress, Data);
-
- /* Return last operation status */
- return Status;
-}
-
-/**
- * @brief Erases PAGE and PAGE1 and writes VALID_PAGE header to PAGE
- * @param None
- * @retval Status of the last operation (Flash write or erase) done during
- * EEPROM formating
- */
-static HAL_StatusTypeDef EE_Format(void) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint32_t SectorError = 0;
- FLASH_EraseInitTypeDef pEraseInit;
-
- pEraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
- pEraseInit.Sector = PAGE0_ID;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
- /* Erase Page0 */
- if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
- /* Set Page0 as valid page: Write VALID_PAGE at Page0 base address */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
-
- pEraseInit.Sector = PAGE1_ID;
- /* Erase Page1 */
- if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- }
-
- return HAL_OK;
-}
-
-/**
- * @brief Find valid Page for write or read operation
- * @param Operation: operation to achieve on the valid page.
- * This parameter can be one of the following values:
- * @arg READ_FROM_VALID_PAGE: read operation from valid page
- * @arg WRITE_IN_VALID_PAGE: write operation from valid page
- * @retval Valid page number (PAGE or PAGE1) or NO_VALID_PAGE in case
- * of no valid page was found
- */
-static uint16_t EE_FindValidPage(uint8_t Operation) {
- uint16_t PageStatus0 = 6, PageStatus1 = 6;
-
- /* Get Page0 actual status */
- PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
-
- /* Get Page1 actual status */
- PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
-
- /* Write or read operation */
- switch (Operation) {
- case WRITE_IN_VALID_PAGE: /* ---- Write operation ---- */
- if (PageStatus1 == VALID_PAGE) {
- /* Page0 receiving data */
- if (PageStatus0 == RECEIVE_DATA) return PAGE0; /* Page0 valid */
- else return PAGE1; /* Page1 valid */
- }
- else if (PageStatus0 == VALID_PAGE) {
- /* Page1 receiving data */
- if (PageStatus1 == RECEIVE_DATA) return PAGE1; /* Page1 valid */
- else return PAGE0; /* Page0 valid */
- }
- else
- return NO_VALID_PAGE; /* No valid Page */
-
- case READ_FROM_VALID_PAGE: /* ---- Read operation ---- */
- if (PageStatus0 == VALID_PAGE)
- return PAGE0; /* Page0 valid */
- else if (PageStatus1 == VALID_PAGE)
- return PAGE1; /* Page1 valid */
- else
- return NO_VALID_PAGE; /* No valid Page */
-
- default:
- return PAGE0; /* Page0 valid */
- }
-}
-
-/**
- * @brief Verify if active page is full and Writes variable in EEPROM.
- * @param VirtAddress: 16 bit virtual address of the variable
- * @param Data: 16 bit data to be written as variable value
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - PAGE_FULL: if valid page is full
- * - NO_VALID_PAGE: if no valid page was found
- * - Flash error code: on write Flash error
- */
-static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Data) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint16_t ValidPage = PAGE0;
- uint32_t Address = EEPROM_START_ADDRESS, PageEndAddress = EEPROM_START_ADDRESS+PAGE_SIZE;
-
- /* Get valid Page for write operation */
- ValidPage = EE_FindValidPage(WRITE_IN_VALID_PAGE);
-
- /* Check if there is no valid page */
- if (ValidPage == NO_VALID_PAGE) return NO_VALID_PAGE;
-
- /* Get the valid Page start Address */
- Address = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
-
- /* Get the valid Page end Address */
- PageEndAddress = (uint32_t)((EEPROM_START_ADDRESS - 1) + (uint32_t)((ValidPage + 1) * PAGE_SIZE));
-
- /* Check each active page address starting from begining */
- while (Address < PageEndAddress) {
- /* Verify if Address and Address+2 contents are 0xFFFFFFFF */
- if ((*(__IO uint32_t*)Address) == 0xFFFFFFFF) {
- /* Set variable data */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address, Data);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- /* Set variable virtual address */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address + 2, VirtAddress);
- /* Return program operation status */
- return FlashStatus;
- }
- else /* Next address location */
- Address += 4;
- }
-
- /* Return PAGE_FULL in case the valid page is full */
- return PAGE_FULL;
-}
-
-/**
- * @brief Transfers last updated variables data from the full Page to
- * an empty one.
- * @param VirtAddress: 16 bit virtual address of the variable
- * @param Data: 16 bit data to be written as variable value
- * @retval Success or error status:
- * - FLASH_COMPLETE: on success
- * - PAGE_FULL: if valid page is full
- * - NO_VALID_PAGE: if no valid page was found
- * - Flash error code: on write Flash error
- */
-static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint32_t NewPageAddress = EEPROM_START_ADDRESS;
- uint16_t OldPageId=0;
- uint16_t ValidPage = PAGE0, VarIdx = 0;
- uint16_t EepromStatus = 0, ReadStatus = 0;
- uint32_t SectorError = 0;
- FLASH_EraseInitTypeDef pEraseInit;
-
- /* Get active Page for read operation */
- ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
-
- if (ValidPage == PAGE1) { /* Page1 valid */
- /* New page address where variable will be moved to */
- NewPageAddress = PAGE0_BASE_ADDRESS;
- /* Old page ID where variable will be taken from */
- OldPageId = PAGE1_ID;
- }
- else if (ValidPage == PAGE0) { /* Page0 valid */
- /* New page address where variable will be moved to */
- NewPageAddress = PAGE1_BASE_ADDRESS;
- /* Old page ID where variable will be taken from */
- OldPageId = PAGE0_ID;
- }
- else
- return NO_VALID_PAGE; /* No valid Page */
-
- /* Set the new Page status to RECEIVE_DATA status */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, RECEIVE_DATA);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
-
- /* Write the variable passed as parameter in the new active page */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
- /* If program operation was failed, a Flash error code is returned */
- if (EepromStatus != HAL_OK) return EepromStatus;
-
- /* Transfer process: transfer variables from old to the new active page */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
- if (VirtAddVarTab[VarIdx] != VirtAddress) { /* Check each variable except the one passed as parameter */
- /* Read the other last variable updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
- /* In case variable corresponding to the virtual address was found */
- if (ReadStatus != 0x1) {
- /* Transfer the variable to the new active page */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
- /* If program operation was failed, a Flash error code is returned */
- if (EepromStatus != HAL_OK) return EepromStatus;
- }
- }
- }
-
- pEraseInit.TypeErase = TYPEERASE_SECTORS;
- pEraseInit.Sector = OldPageId;
- pEraseInit.NbSectors = 1;
- pEraseInit.VoltageRange = VOLTAGE_RANGE;
-
- /* Erase the old Page: Set old Page status to ERASED status */
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
-
- /* Set new Page status to VALID_PAGE status */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
-
- /* Return last operation flash status */
- return FlashStatus;
-}
-
-#endif // STM32F4 || STM32F4xx
-
-/**
- * @}
- */
-
-/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
diff --git a/Marlin/src/HAL/HAL_STM32F4/EmulatedEeprom.cpp b/Marlin/src/HAL/HAL_STM32F4/EmulatedEeprom.cpp
deleted file mode 100644
index 5cd41bd30d..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/EmulatedEeprom.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * 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 .
- *
- */
-
-#if defined(STM32GENERIC) && (defined(STM32F4))
-
-/**
- * Description: functions for I2C connected external EEPROM.
- * Not platform dependent.
- */
-
-#include "../../inc/MarlinConfig.h"
-
-#if ENABLED(EEPROM_SETTINGS) && NONE(I2C_EEPROM, SPI_EEPROM)
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-#include "EEPROM_Emul/eeprom_emul.h"
-
-
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-static bool eeprom_initialized = false;
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-// FLASH_FLAG_PGSERR (Programming Sequence Error) was renamed to
-// FLASH_FLAG_ERSERR (Erasing Sequence Error) in STM32F4
-// #define FLASH_FLAG_PGSERR FLASH_FLAG_ERSERR
-
-// --------------------------------------------------------------------------
-// EEPROM
-// --------------------------------------------------------------------------
-
-
-void eeprom_init() {
- if (!eeprom_initialized) {
- HAL_FLASH_Unlock();
-
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
-
- /* EEPROM Init */
- if (EE_Initialize() != EE_OK)
- for (;;) HAL_Delay(1); // Spin forever until watchdog reset
-
- HAL_FLASH_Lock();
- eeprom_initialized = true;
- }
-}
-
-void eeprom_write_byte(uint8_t *pos, unsigned char value) {
- uint16_t eeprom_address = (unsigned) pos;
-
- eeprom_init();
-
- HAL_FLASH_Unlock();
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
-
- if (EE_WriteVariable(eeprom_address, (uint16_t) value) != EE_OK)
- for (;;) HAL_Delay(1); // Spin forever until watchdog reset
-
- HAL_FLASH_Lock();
-}
-
-uint8_t eeprom_read_byte(uint8_t *pos) {
- uint16_t data = 0xFF;
- uint16_t eeprom_address = (unsigned)pos;
-
- eeprom_init();
-
- if (EE_ReadVariable(eeprom_address, &data) != EE_OK) {
- return (unsigned char)data;
- }
- return (unsigned char)data;
-}
-
-void eeprom_read_block(void *__dst, const void *__src, size_t __n) {
- uint16_t data = 0xFF;
- uint16_t eeprom_address = (unsigned) __src;
-
- eeprom_init();
-
- for (uint8_t c = 0; c < __n; c++) {
- EE_ReadVariable(eeprom_address+c, &data);
- *((uint8_t*)__dst + c) = data;
- }
-}
-
-void eeprom_update_block(const void *__src, void *__dst, size_t __n) {
-
-}
-
-#endif // EEPROM_SETTINGS && (!I2C_EEPROM && !SPI_EEPROM)
-#endif // STM32GENERIC && STM32F4
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL.cpp b/Marlin/src/HAL/HAL_STM32F4/HAL.cpp
deleted file mode 100644
index 3fa2aa2250..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/HAL.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- *
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-
-#if defined(STM32GENERIC) && defined(STM32F4)
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-
-//#include
-
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-uint16_t HAL_adc_result;
-
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-/* VGPV Done with defines
-// disable interrupts
-void cli(void) { noInterrupts(); }
-
-// enable interrupts
-void sei(void) { interrupts(); }
-*/
-
-void HAL_clear_reset_source(void) { __HAL_RCC_CLEAR_RESET_FLAGS(); }
-
-uint8_t HAL_get_reset_source(void) {
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET) return RST_WATCHDOG;
-
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET) return RST_SOFTWARE;
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET) return RST_EXTERNAL;
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET) return RST_POWER_ON;
- return 0;
-}
-
-void _delay_ms(const int delay_ms) { delay(delay_ms); }
-
-extern "C" {
- extern unsigned int _ebss; // end of bss section
-}
-
-// return free memory between end of heap (or end bss) and whatever is current
-
-/*
-#include "wirish/syscalls.c"
-//extern caddr_t _sbrk(int incr);
-#ifndef CONFIG_HEAP_END
-extern char _lm_heap_end;
-#define CONFIG_HEAP_END ((caddr_t)&_lm_heap_end)
-#endif
-
-extern "C" {
- static int freeMemory() {
- char top = 't';
- return &top - reinterpret_cast(sbrk(0));
- }
- int freeMemory() {
- int free_memory;
- int heap_end = (int)_sbrk(0);
- free_memory = ((int)&free_memory) - ((int)heap_end);
- return free_memory;
- }
-}
-*/
-
-// --------------------------------------------------------------------------
-// ADC
-// --------------------------------------------------------------------------
-
-void HAL_adc_start_conversion(const uint8_t adc_pin) {
- HAL_adc_result = analogRead(adc_pin);
-}
-
-uint16_t HAL_adc_get_result(void) {
- return HAL_adc_result;
-}
-
-#endif // // STM32GENERIC && STM32F4
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL.h b/Marlin/src/HAL/HAL_STM32F4/HAL.h
deleted file mode 100644
index 44fb909598..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/HAL.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- *
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-#pragma once
-
-#define CPU_32_BIT
-
-#ifndef vsnprintf_P
- #define vsnprintf_P vsnprintf
-#endif
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "../shared/Marduino.h"
-#include "../shared/math_32bit.h"
-#include "../shared/HAL_SPI.h"
-#include "fastio_STM32F4.h"
-#include "watchdog_STM32F4.h"
-#include "HAL_timers_STM32F4.h"
-
-#include "../../inc/MarlinConfigPre.h"
-
-#include
-
-#ifdef USBCON
- #include
-#endif
-
-// --------------------------------------------------------------------------
-// Defines
-// --------------------------------------------------------------------------
-
-//Serial override
-//extern HalSerial usb_serial;
-
-#if SERIAL_PORT == 0
- #error "Serial port 0 does not exist"
-#endif
-
-#if !WITHIN(SERIAL_PORT, -1, 6)
- #error "SERIAL_PORT must be from -1 to 6"
-#endif
-#if SERIAL_PORT == -1
- #define MYSERIAL0 SerialUSB
-#elif SERIAL_PORT == 1
- #define MYSERIAL0 SerialUART1
-#elif SERIAL_PORT == 2
- #define MYSERIAL0 SerialUART2
-#elif SERIAL_PORT == 3
- #define MYSERIAL0 SerialUART3
-#elif SERIAL_PORT == 4
- #define MYSERIAL0 SerialUART4
-#elif SERIAL_PORT == 5
- #define MYSERIAL0 SerialUART5
-#elif SERIAL_PORT == 6
- #define MYSERIAL0 SerialUART6
-#endif
-
-#ifdef SERIAL_PORT_2
- #if SERIAL_PORT_2 == 0
- #error "Serial port 0 does not exist"
- #endif
-
- #if !WITHIN(SERIAL_PORT_2, -1, 6)
- #error "SERIAL_PORT_2 must be from -1 to 6"
- #elif SERIAL_PORT_2 == SERIAL_PORT
- #error "SERIAL_PORT_2 must be different than SERIAL_PORT"
- #endif
- #define NUM_SERIAL 2
- #if SERIAL_PORT_2 == -1
- #define MYSERIAL1 SerialUSB
- #elif SERIAL_PORT_2 == 1
- #define MYSERIAL1 SerialUART1
- #elif SERIAL_PORT_2 == 2
- #define MYSERIAL1 SerialUART2
- #elif SERIAL_PORT_2 == 3
- #define MYSERIAL1 SerialUART3
- #elif SERIAL_PORT_2 == 4
- #define MYSERIAL1 SerialUART4
- #elif SERIAL_PORT_2 == 5
- #define MYSERIAL1 SerialUART5
- #elif SERIAL_PORT_2 == 6
- #define MYSERIAL1 SerialUART6
- #endif
-#else
- #define NUM_SERIAL 1
-#endif
-
-#undef _BV
-#define _BV(b) (1 << (b))
-
-/**
- * TODO: review this to return 1 for pins that are not analog input
- */
-#ifndef analogInputToDigitalPin
- #define analogInputToDigitalPin(p) (p)
-#endif
-
-#define CRITICAL_SECTION_START uint32_t primask = __get_PRIMASK(); __disable_irq()
-#define CRITICAL_SECTION_END if (!primask) __enable_irq()
-#define ISRS_ENABLED() (!__get_PRIMASK())
-#define ENABLE_ISRS() __enable_irq()
-#define DISABLE_ISRS() __disable_irq()
-#define cli() __disable_irq()
-#define sei() __enable_irq()
-
-// On AVR this is in math.h?
-#define square(x) ((x)*(x))
-
-#ifndef strncpy_P
- #define strncpy_P(dest, src, num) strncpy((dest), (src), (num))
-#endif
-
-// Fix bug in pgm_read_ptr
-#undef pgm_read_ptr
-#define pgm_read_ptr(addr) (*(addr))
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-typedef int8_t pin_t;
-
-#define HAL_SERVO_LIB libServo
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-/** result of last ADC conversion */
-extern uint16_t HAL_adc_result;
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-// Memory related
-#define __bss_end __bss_end__
-
-inline void HAL_init(void) { }
-
-/** clear reset reason */
-void HAL_clear_reset_source (void);
-
-/** reset reason */
-uint8_t HAL_get_reset_source(void);
-
-void _delay_ms(const int delay);
-
-/*
-extern "C" {
- int freeMemory(void);
-}
-*/
-
-extern "C" char* _sbrk(int incr);
-
-/*
-static int freeMemory() {
- volatile int top;
- top = (int)((char*)&top - reinterpret_cast(_sbrk(0)));
- return top;
-}
-*/
-
-static int freeMemory() {
- volatile char top;
- return &top - reinterpret_cast(_sbrk(0));
-}
-
-//
-// SPI: Extended functions which take a channel number (hardware SPI only)
-//
-
-/** Write single byte to specified SPI channel */
-void spiSend(uint32_t chan, byte b);
-/** Write buffer to specified SPI channel */
-void spiSend(uint32_t chan, const uint8_t* buf, size_t n);
-/** Read single byte from specified SPI channel */
-uint8_t spiRec(uint32_t chan);
-
-//
-// EEPROM
-//
-
-/**
- * TODO: Write all this EEPROM stuff. Can emulate EEPROM in flash as last resort.
- * Wire library should work for i2c EEPROMs.
- */
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
-uint8_t eeprom_read_byte(uint8_t *pos);
-void eeprom_read_block (void *__dst, const void *__src, size_t __n);
-void eeprom_update_block (const void *__src, void *__dst, size_t __n);
-
-//
-// ADC
-//
-
-#define HAL_ANALOG_SELECT(pin) pinMode(pin, INPUT)
-
-inline void HAL_adc_init(void) {}
-
-#define HAL_START_ADC(pin) HAL_adc_start_conversion(pin)
-#define HAL_READ_ADC() HAL_adc_result
-#define HAL_ADC_READY() true
-
-void HAL_adc_start_conversion(const uint8_t adc_pin);
-uint16_t HAL_adc_get_result(void);
-
-#define GET_PIN_MAP_PIN(index) index
-#define GET_PIN_MAP_INDEX(pin) pin
-#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
-
-#define JTAG_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY)
-#define JTAGSWD_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_NONE)
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.cpp b/Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.cpp
deleted file mode 100644
index d8545cc9e0..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-
-#if defined(STM32GENERIC) && defined(STM32F4)
-
-#include "../../inc/MarlinConfig.h"
-
-#if HAS_SERVOS
-
-#include "HAL_Servo_STM32F4.h"
-
-int8_t libServo::attach(const int pin) {
- return Servo::attach(pin);
-}
-
-int8_t libServo::attach(const int pin, const int min, const int max) {
- return Servo::attach(pin, min, max);
-}
-
-void libServo::move(const int value) {
- constexpr uint16_t servo_delay[] = SERVO_DELAY;
- static_assert(COUNT(servo_delay) == NUM_SERVOS, "SERVO_DELAY must be an array NUM_SERVOS long.");
- if (this->attach(0) >= 0) {
- this->write(value);
- safe_delay(servo_delay[this->servoIndex]);
- #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)
- this->detach();
- #endif
- }
-}
-#endif // HAS_SERVOS
-
-#endif // STM32GENERIC && STM32F4
diff --git a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h b/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
deleted file mode 100644
index 56615564cb..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/fastio_STM32F4.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-#pragma once
-
-/**
- * Fast I/O interfaces for STM32F4
- * These use GPIO functions instead of Direct Port Manipulation, as on AVR.
- */
-
-#undef _BV
-#define _BV(b) (1 << (b))
-
-#define READ(IO) digitalRead(IO)
-#define WRITE(IO,V) digitalWrite(IO,V)
-
-#define _GET_MODE(IO)
-#define _SET_MODE(IO,M) pinMode(IO, M)
-#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) /*!< Output Push Pull Mode & GPIO_NOPULL */
-
-#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); }while(0)
-
-#define SET_INPUT(IO) _SET_MODE(IO, INPUT) /*!< Input Floating Mode */
-#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) /*!< Input with Pull-up activation */
-#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN) /*!< Input with Pull-down activation */
-#define SET_OUTPUT(IO) OUT_WRITE(IO, LOW)
-#define SET_PWM(IO) pinMode(IO, PWM)
-
-#define TOGGLE(IO) OUT_WRITE(IO, !READ(IO))
-
-#define IS_INPUT(IO)
-#define IS_OUTPUT(IO)
-
-#define PWM_PIN(P) true
-
-// digitalRead/Write wrappers
-#define extDigitalRead(IO) digitalRead(IO)
-#define extDigitalWrite(IO,V) digitalWrite(IO,V)
-
-//
-// Pins Definitions
-//
-#define PORTA 0
-#define PORTB 1
-#define PORTC 2
-#define PORTD 3
-#define PORTE 4
-
-#define _STM32_PIN(P,PN) ((PORT##P * 16) + PN)
-
-#define PA0 _STM32_PIN(A, 0)
-#define PA1 _STM32_PIN(A, 1)
-#define PA2 _STM32_PIN(A, 2)
-#define PA3 _STM32_PIN(A, 3)
-#define PA4 _STM32_PIN(A, 4)
-#define PA5 _STM32_PIN(A, 5)
-#define PA6 _STM32_PIN(A, 6)
-#define PA7 _STM32_PIN(A, 7)
-#define PA8 _STM32_PIN(A, 8)
-#define PA9 _STM32_PIN(A, 9)
-#define PA10 _STM32_PIN(A, 10)
-#define PA11 _STM32_PIN(A, 11)
-#define PA12 _STM32_PIN(A, 12)
-#define PA13 _STM32_PIN(A, 13)
-#define PA14 _STM32_PIN(A, 14)
-#define PA15 _STM32_PIN(A, 15)
-
-#define PB0 _STM32_PIN(B, 0)
-#define PB1 _STM32_PIN(B, 1)
-#define PB2 _STM32_PIN(B, 2)
-#define PB3 _STM32_PIN(B, 3)
-#define PB4 _STM32_PIN(B, 4)
-#define PB5 _STM32_PIN(B, 5)
-#define PB6 _STM32_PIN(B, 6)
-#define PB7 _STM32_PIN(B, 7)
-#define PB8 _STM32_PIN(B, 8)
-#define PB9 _STM32_PIN(B, 9)
-#define PB10 _STM32_PIN(B, 10)
-#define PB11 _STM32_PIN(B, 11)
-#define PB12 _STM32_PIN(B, 12)
-#define PB13 _STM32_PIN(B, 13)
-#define PB14 _STM32_PIN(B, 14)
-#define PB15 _STM32_PIN(B, 15)
-
-#define PC0 _STM32_PIN(C, 0)
-#define PC1 _STM32_PIN(C, 1)
-#define PC2 _STM32_PIN(C, 2)
-#define PC3 _STM32_PIN(C, 3)
-#define PC4 _STM32_PIN(C, 4)
-#define PC5 _STM32_PIN(C, 5)
-#define PC6 _STM32_PIN(C, 6)
-#define PC7 _STM32_PIN(C, 7)
-#define PC8 _STM32_PIN(C, 8)
-#define PC9 _STM32_PIN(C, 9)
-#define PC10 _STM32_PIN(C, 10)
-#define PC11 _STM32_PIN(C, 11)
-#define PC12 _STM32_PIN(C, 12)
-#define PC13 _STM32_PIN(C, 13)
-#define PC14 _STM32_PIN(C, 14)
-#define PC15 _STM32_PIN(C, 15)
-
-#define PD0 _STM32_PIN(D, 0)
-#define PD1 _STM32_PIN(D, 1)
-#define PD2 _STM32_PIN(D, 2)
-#define PD3 _STM32_PIN(D, 3)
-#define PD4 _STM32_PIN(D, 4)
-#define PD5 _STM32_PIN(D, 5)
-#define PD6 _STM32_PIN(D, 6)
-#define PD7 _STM32_PIN(D, 7)
-#define PD8 _STM32_PIN(D, 8)
-#define PD9 _STM32_PIN(D, 9)
-#define PD10 _STM32_PIN(D, 10)
-#define PD11 _STM32_PIN(D, 11)
-#define PD12 _STM32_PIN(D, 12)
-#define PD13 _STM32_PIN(D, 13)
-#define PD14 _STM32_PIN(D, 14)
-#define PD15 _STM32_PIN(D, 15)
-
-#define PE0 _STM32_PIN(E, 0)
-#define PE1 _STM32_PIN(E, 1)
-#define PE2 _STM32_PIN(E, 2)
-#define PE3 _STM32_PIN(E, 3)
-#define PE4 _STM32_PIN(E, 4)
-#define PE5 _STM32_PIN(E, 5)
-#define PE6 _STM32_PIN(E, 6)
-#define PE7 _STM32_PIN(E, 7)
-#define PE8 _STM32_PIN(E, 8)
-#define PE9 _STM32_PIN(E, 9)
-#define PE10 _STM32_PIN(E, 10)
-#define PE11 _STM32_PIN(E, 11)
-#define PE12 _STM32_PIN(E, 12)
-#define PE13 _STM32_PIN(E, 13)
-#define PE14 _STM32_PIN(E, 14)
-#define PE15 _STM32_PIN(E, 15)
diff --git a/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp
deleted file mode 100644
index 811b1ed9f4..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- *
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
- * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
- *
- * 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 .
- *
- */
-
-#if defined(STM32GENERIC) && defined(STM32F4)
-
-#include "../shared/persistent_store_api.h"
-
-#include "../../inc/MarlinConfig.h"
-
-#if ENABLED(EEPROM_SETTINGS)
-
-bool PersistentStore::access_start() { return true; }
-bool PersistentStore::access_finish() { return true; }
-
-bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
- while (size--) {
- uint8_t * const p = (uint8_t * const)pos;
- uint8_t v = *value;
- // EEPROM has only ~100,000 write cycles,
- // so only write bytes that have changed!
- if (v != eeprom_read_byte(p)) {
- eeprom_write_byte(p, v);
- if (eeprom_read_byte(p) != v) {
- SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
- return true;
- }
- }
- crc16(crc, &v, 1);
- pos++;
- value++;
- };
- return false;
-}
-
-bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing) {
- do {
- uint8_t c = eeprom_read_byte((uint8_t*)pos);
- if (writing) *value = c;
- crc16(crc, &c, 1);
- pos++;
- value++;
- } while (--size);
- return false;
-}
-
-size_t PersistentStore::capacity() { return E2END + 1; }
-
-#endif // EEPROM_SETTINGS
-#endif // STM32GENERIC && STM32F4
diff --git a/Marlin/src/HAL/HAL_STM32F4/pinsDebug.h b/Marlin/src/HAL/HAL_STM32F4/pinsDebug.h
deleted file mode 100644
index a8b632870a..0000000000
--- a/Marlin/src/HAL/HAL_STM32F4/pinsDebug.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * 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 .
- *
- */
-#pragma once
-
-#ifdef NUM_DIGITAL_PINS // Only in ST's Arduino core (STM32duino, STM32Core)
- #include "../HAL_STM32/pinsDebug_STM32duino.h"
-#elif defined(BOARD_NR_GPIO_PINS) // Only in STM32GENERIC (Maple)
- #include "../HAL_STM32/pinsDebug_STM32GENERIC.h"
-#else
- #error "M43 not supported for this board"
-#endif
diff --git a/Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.h b/Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.h
deleted file mode 100644
index 8cffdbef77..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/******************************************************************************
- * @file eeprom_emul.h
- * @author MCD Application Team
- * @version V1.2.6
- * @date 04-November-2016
- * @brief This file contains all the functions prototypes for the EEPROM
- * emulation firmware library.
- ******************************************************************************
- * @attention
- *
- * © Copyright © 2016 STMicroelectronics International N.V.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted, provided that the following conditions are met:
- *
- * 1. Redistribution of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of other
- * contributors to this software may be used to endorse or promote products
- * derived from this software without specific written permission.
- * 4. This software, including modifications and/or derivative works of this
- * software, must execute solely and exclusively on microcontroller or
- * microprocessor devices manufactured by or for STMicroelectronics.
- * 5. Redistribution and use of this software other than as permitted under
- * this license is void and will automatically terminate your rights under
- * this license.
- *
- * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
- * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
- * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *****************************************************************************/
-#pragma once
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-#include "../../../inc/MarlinConfig.h"
-#include "../HAL.h"
-
-/* Exported constants --------------------------------------------------------*/
-/* EEPROM emulation firmware error codes */
-#define EE_OK (uint32_t)HAL_OK
-#define EE_ERROR (uint32_t)HAL_ERROR
-#define EE_BUSY (uint32_t)HAL_BUSY
-#define EE_TIMEOUT (uint32_t)HAL_TIMEOUT
-
-/* Define the size of the sectors to be used */
-#define PAGE_SIZE (uint32_t)0x4000 /* Page size = 16KByte */
-
-/* Device voltage range supposed to be [2.7V to 3.6V], the operation will
- be done by word */
-#define VOLTAGE_RANGE (uint8_t)VOLTAGE_RANGE_3
-
-/* EEPROM start address in Flash */
-#define EEPROM_START_ADDRESS ((uint32_t)0x08100000) /* EEPROM emulation start address:
- from sector2 : after 16KByte of used
- Flash memory */
-
-/* Pages 0 and 1 base and end addresses */
-#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x0000))
-#define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))
-#define PAGE0_ID FLASH_SECTOR_1
-
-#define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x4000))
-#define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))
-#define PAGE1_ID FLASH_SECTOR_2
-
-/* Used Flash pages for EEPROM emulation */
-#define PAGE0 ((uint16_t)0x0000)
-#define PAGE1 ((uint16_t)0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/
-
-/* No valid page define */
-#define NO_VALID_PAGE ((uint16_t)0x00AB)
-
-/* Page status definitions */
-#define ERASED ((uint16_t)0xFFFF) /* Page is empty */
-#define RECEIVE_DATA ((uint16_t)0xEEEE) /* Page is marked to receive data */
-#define VALID_PAGE ((uint16_t)0x0000) /* Page containing valid data */
-
-/* Valid pages in read and write defines */
-#define READ_FROM_VALID_PAGE ((uint8_t)0x00)
-#define WRITE_IN_VALID_PAGE ((uint8_t)0x01)
-
-/* Page full define */
-#define PAGE_FULL ((uint8_t)0x80)
-
-/* Variables' number */
-#define NB_OF_VAR ((uint16_t)4096)
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-uint16_t EE_Initialize(void);
-uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);
-uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Marlin/src/HAL/HAL_STM32F7/EmulatedEeprom.cpp b/Marlin/src/HAL/HAL_STM32F7/EmulatedEeprom.cpp
deleted file mode 100644
index a612b89538..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/EmulatedEeprom.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * 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 .
- *
- */
-
-#ifdef STM32F7
-
-/**
- * Description: functions for I2C connected external EEPROM.
- * Not platform dependent.
- */
-
-#include "../../inc/MarlinConfig.h"
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-#include "EEPROM_Emul/eeprom_emul.h"
-
-
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-static bool eeprom_initialized = false;
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-// FLASH_FLAG_PGSERR (Programming Sequence Error) was renamed to
-// FLASH_FLAG_ERSERR (Erasing Sequence Error) in STM32F7
-#define FLASH_FLAG_PGSERR FLASH_FLAG_ERSERR
-
-// --------------------------------------------------------------------------
-// EEPROM
-// --------------------------------------------------------------------------
-
-
-void eeprom_init() {
- if (!eeprom_initialized) {
- HAL_FLASH_Unlock();
-
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
-
- /* EEPROM Init */
- if (EE_Initialize() != EE_OK)
- for (;;) HAL_Delay(1); // Spin forever until watchdog reset
-
- HAL_FLASH_Lock();
- eeprom_initialized = true;
- }
-}
-
-void eeprom_write_byte(uint8_t *pos, unsigned char value) {
- uint16_t eeprom_address = (unsigned) pos;
-
- eeprom_init();
-
- HAL_FLASH_Unlock();
- __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
-
- if (EE_WriteVariable(eeprom_address, (uint16_t) value) != EE_OK)
- for (;;) HAL_Delay(1); // Spin forever until watchdog reset
-
- HAL_FLASH_Lock();
-}
-
-uint8_t eeprom_read_byte(uint8_t *pos) {
- uint16_t data = 0xFF;
- uint16_t eeprom_address = (unsigned)pos;
-
- eeprom_init();
-
- if (EE_ReadVariable(eeprom_address, &data) != EE_OK) {
- return (unsigned char)data;
- }
- return (unsigned char)data;
-}
-
-void eeprom_read_block(void *__dst, const void *__src, size_t __n) {
- uint16_t data = 0xFF;
- uint16_t eeprom_address = (unsigned) __src;
-
- eeprom_init();
-
- for (uint8_t c = 0; c < __n; c++) {
- EE_ReadVariable(eeprom_address+c, &data);
- *((uint8_t*)__dst + c) = data;
- }
-}
-
-void eeprom_update_block(const void *__src, void *__dst, size_t __n) {
-
-}
-
-#endif // STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL.cpp b/Marlin/src/HAL/HAL_STM32F7/HAL.cpp
deleted file mode 100644
index e266eabf46..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/HAL.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- *
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
- * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-
-#ifdef STM32F7
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-
-//#include
-
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-uint16_t HAL_adc_result;
-
-// --------------------------------------------------------------------------
-// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-/* VGPV Done with defines
-// disable interrupts
-void cli(void) { noInterrupts(); }
-
-// enable interrupts
-void sei(void) { interrupts(); }
-*/
-
-void HAL_clear_reset_source(void) { __HAL_RCC_CLEAR_RESET_FLAGS(); }
-
-uint8_t HAL_get_reset_source(void) {
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)
- return RST_WATCHDOG;
-
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET)
- return RST_SOFTWARE;
-
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
- return RST_EXTERNAL;
-
- if (__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET)
- return RST_POWER_ON;
- return 0;
-}
-
-void _delay_ms(const int delay_ms) { delay(delay_ms); }
-
-extern "C" {
- extern unsigned int _ebss; // end of bss section
-}
-
-// return free memory between end of heap (or end bss) and whatever is current
-
-/*
-#include "wirish/syscalls.c"
-//extern caddr_t _sbrk(int incr);
-#ifndef CONFIG_HEAP_END
-extern char _lm_heap_end;
-#define CONFIG_HEAP_END ((caddr_t)&_lm_heap_end)
-#endif
-
-extern "C" {
- static int freeMemory() {
- char top = 't';
- return &top - reinterpret_cast(sbrk(0));
- }
- int freeMemory() {
- int free_memory;
- int heap_end = (int)_sbrk(0);
- free_memory = ((int)&free_memory) - ((int)heap_end);
- return free_memory;
- }
-}
-*/
-
-// --------------------------------------------------------------------------
-// ADC
-// --------------------------------------------------------------------------
-
-void HAL_adc_start_conversion(const uint8_t adc_pin) {
- HAL_adc_result = analogRead(adc_pin);
-}
-
-uint16_t HAL_adc_get_result(void) {
- return HAL_adc_result;
-}
-
-#endif // STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.h b/Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.h
deleted file mode 100644
index 6ff0bfc489..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-#pragma once
-
-#include <../../libraries/Servo/src/Servo.h>
-
-// Inherit and expand on the official library
-class libServo : public Servo {
-public:
- int8_t attach(const int pin);
- int8_t attach(const int pin, const int min, const int max);
- void move(const int value);
-private:
- uint16_t min_ticks;
- uint16_t max_ticks;
- uint8_t servoIndex; // index into the channel data for this servo
-};
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL_spi_STM32F7.cpp b/Marlin/src/HAL/HAL_STM32F7/HAL_spi_STM32F7.cpp
deleted file mode 100644
index 294d90414e..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/HAL_spi_STM32F7.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-
-/**
- * Software SPI functions originally from Arduino Sd2Card Library
- * Copyright (c) 2009 by William Greiman
- */
-
-/**
- * Adapted to the STM32F7 HAL
- */
-
-#ifdef STM32F7
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-#include "../shared/HAL_SPI.h"
-#include
-#include "spi_pins.h"
-#include "../../core/macros.h"
-#include
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-static SPISettings spiConfig;
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
-
-#if ENABLED(SOFTWARE_SPI)
- // --------------------------------------------------------------------------
- // Software SPI
- // --------------------------------------------------------------------------
- #error "Software SPI not supported for STM32F7. Use hardware SPI."
-
-#else
-
-// --------------------------------------------------------------------------
-// Hardware SPI
-// --------------------------------------------------------------------------
-
-/**
- * VGPV SPI speed start and F_CPU/2, by default 72/2 = 36Mhz
- */
-
-/**
- * @brief Begin SPI port setup
- *
- * @return Nothing
- *
- * @details Only configures SS pin since libmaple creates and initialize the SPI object
- */
-void spiBegin(void) {
- #if !PIN_EXISTS(SS)
- #error SS_PIN not defined!
- #endif
-
- OUT_WRITE(SS_PIN, HIGH);
-}
-
-/** Configure SPI for specified SPI speed */
-void spiInit(uint8_t spiRate) {
- // Use datarates Marlin uses
- uint32_t clock;
- switch (spiRate) {
- case SPI_FULL_SPEED: clock = 20000000; break; // 13.9mhz=20000000 6.75mhz=10000000 3.38mhz=5000000 .833mhz=1000000
- case SPI_HALF_SPEED: clock = 5000000; break;
- case SPI_QUARTER_SPEED: clock = 2500000; break;
- case SPI_EIGHTH_SPEED: clock = 1250000; break;
- case SPI_SPEED_5: clock = 625000; break;
- case SPI_SPEED_6: clock = 300000; break;
- default:
- clock = 4000000; // Default from the SPI libarary
- }
- spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
- SPI.begin();
-}
-
-/**
- * @brief Receives a single byte from the SPI port.
- *
- * @return Byte received
- *
- * @details
- */
-uint8_t spiRec(void) {
- SPI.beginTransaction(spiConfig);
- uint8_t returnByte = SPI.transfer(0xFF);
- SPI.endTransaction();
- return returnByte;
-}
-
-/**
- * @brief Receives a number of bytes from the SPI port to a buffer
- *
- * @param buf Pointer to starting address of buffer to write to.
- * @param nbyte Number of bytes to receive.
- * @return Nothing
- *
- * @details Uses DMA
- */
-void spiRead(uint8_t* buf, uint16_t nbyte) {
- SPI.beginTransaction(spiConfig);
- SPI.dmaTransfer(0, const_cast(buf), nbyte);
- SPI.endTransaction();
-}
-
-/**
- * @brief Sends a single byte on SPI port
- *
- * @param b Byte to send
- *
- * @details
- */
-void spiSend(uint8_t b) {
- SPI.beginTransaction(spiConfig);
- SPI.transfer(b);
- SPI.endTransaction();
-}
-
-/**
- * @brief Write token and then write from 512 byte buffer to SPI (for SD card)
- *
- * @param buf Pointer with buffer start address
- * @return Nothing
- *
- * @details Use DMA
- */
-void spiSendBlock(uint8_t token, const uint8_t* buf) {
- SPI.beginTransaction(spiConfig);
- SPI.transfer(token);
- SPI.dmaSend(const_cast(buf), 512);
- SPI.endTransaction();
-}
-
-#endif // SOFTWARE_SPI
-
-#endif // STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/SanityCheck.h b/Marlin/src/HAL/HAL_STM32F7/SanityCheck.h
deleted file mode 100644
index e292de4efe..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/SanityCheck.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 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 .
- *
- */
-#pragma once
-
-/**
- * Test STM32F7-specific configuration values for errors at compile-time.
- */
-//#if ENABLED(SPINDLE_LASER_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
-// #error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
-//#endif
-
-#if ENABLED(EMERGENCY_PARSER)
- #error "EMERGENCY_PARSER is not yet implemented for STM32F7. Disable EMERGENCY_PARSER to continue."
-#endif
-
-#if ENABLED(FAST_PWM_FAN)
- #error "FAST_PWM_FAN is not yet implemented for this platform."
-#endif
diff --git a/Marlin/src/HAL/HAL_STM32F7/endstop_interrupts.h b/Marlin/src/HAL/HAL_STM32F7/endstop_interrupts.h
deleted file mode 100644
index 86f6d68c59..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/endstop_interrupts.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- * Copyright (c) 2017 Victor Perez
- *
- * 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 .
- *
- */
-#pragma once
-
-#include "../../module/endstops.h"
-
-// One ISR for all EXT-Interrupts
-void endstop_ISR(void) { endstops.update(); }
-
-void setup_endstop_interrupts(void) {
- #if HAS_X_MAX
- attachInterrupt(X_MAX_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_X_MIN
- attachInterrupt(X_MIN_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Y_MAX
- attachInterrupt(Y_MAX_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Y_MIN
- attachInterrupt(Y_MIN_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z_MAX
- attachInterrupt(Z_MAX_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z_MIN
- attachInterrupt(Z_MIN_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z2_MAX
- attachInterrupt(Z2_MAX_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z2_MIN
- attachInterrupt(Z2_MIN_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z3_MAX
- attachInterrupt(Z3_MAX_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z3_MIN
- attachInterrupt(Z3_MIN_PIN, endstop_ISR, CHANGE);
- #endif
- #if HAS_Z_MIN_PROBE_PIN
- attachInterrupt(Z_MIN_PROBE_PIN, endstop_ISR, CHANGE);
- #endif
-}
diff --git a/Marlin/src/HAL/HAL_STM32F7/spi_pins.h b/Marlin/src/HAL/HAL_STM32F7/spi_pins.h
deleted file mode 100644
index 267cba6fd0..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/spi_pins.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * 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 .
- *
- */
-#pragma once
-
-/**
- * Define SPI Pins: SCK, MISO, MOSI, SS
- */
-#define SCK_PIN PA5
-#define MISO_PIN PA6
-#define MOSI_PIN PA7
-#define SS_PIN PA8
diff --git a/Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.cpp b/Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.cpp
deleted file mode 100644
index 8b75454dad..0000000000
--- a/Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 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 .
- *
- */
-
-#ifdef STM32F7
-
-#include "../../inc/MarlinConfig.h"
-
-#if ENABLED(USE_WATCHDOG)
-
- #include "watchdog_STM32F7.h"
-
- IWDG_HandleTypeDef hiwdg;
-
- void watchdog_init() {
- hiwdg.Instance = IWDG;
- hiwdg.Init.Prescaler = IWDG_PRESCALER_32; //32kHz LSI clock and 32x prescalar = 1024Hz IWDG clock
- hiwdg.Init.Reload = 4095; //4095 counts = 4 seconds at 1024Hz
- if (HAL_IWDG_Init(&hiwdg) != HAL_OK) {
- //Error_Handler();
- }
- }
-
- void watchdog_reset() {
- /* Refresh IWDG: reload counter */
- if (HAL_IWDG_Refresh(&hiwdg) != HAL_OK) {
- /* Refresh Error */
- //Error_Handler();
- }
- }
-
-#endif // USE_WATCHDOG
-
-#endif // STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32_F4_F7/EmulatedEeprom.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/EmulatedEeprom.cpp
new file mode 100644
index 0000000000..5e6ae09bf1
--- /dev/null
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/EmulatedEeprom.cpp
@@ -0,0 +1,122 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * 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 .
+ *
+ */
+
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
+
+/**
+ * Description: Functions for a Flash emulated EEPROM
+ * Not platform dependent.
+ */
+
+// Include configs and pins to get all EEPROM flags
+#include "../../inc/MarlinConfig.h"
+
+#ifdef STM32F7
+ #define HAS_EMULATED_EEPROM 1
+#else
+ #define HAS_EMULATED_EEPROM NONE(I2C_EEPROM, SPI_EEPROM)
+#endif
+
+#if HAS_EMULATED_EEPROM && ENABLED(EEPROM_SETTINGS)
+
+// ------------------------
+// Includes
+// ------------------------
+
+#include "HAL.h"
+#include "eeprom_emul.h"
+
+// ------------------------
+// Local defines
+// ------------------------
+
+// FLASH_FLAG_PGSERR (Programming Sequence Error) was renamed to
+// FLASH_FLAG_ERSERR (Erasing Sequence Error) in STM32F4/7
+
+#ifdef STM32F7
+ #define FLASH_FLAG_PGSERR FLASH_FLAG_ERSERR
+#else
+ //#define FLASH_FLAG_PGSERR FLASH_FLAG_ERSERR
+#endif
+
+// ------------------------
+// Private Variables
+// ------------------------
+
+static bool eeprom_initialized = false;
+
+// ------------------------
+// Public functions
+// ------------------------
+
+void eeprom_init() {
+ if (!eeprom_initialized) {
+ HAL_FLASH_Unlock();
+
+ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
+
+ /* EEPROM Init */
+ if (EE_Initialize() != EE_OK)
+ for (;;) HAL_Delay(1); // Spin forever until watchdog reset
+
+ HAL_FLASH_Lock();
+ eeprom_initialized = true;
+ }
+}
+
+void eeprom_write_byte(uint8_t *pos, unsigned char value) {
+ eeprom_init();
+
+ HAL_FLASH_Unlock();
+ __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
+
+ uint16_t eeprom_address = unsigned(pos);
+ if (EE_WriteVariable(eeprom_address, uint16_t(value)) != EE_OK)
+ for (;;) HAL_Delay(1); // Spin forever until watchdog reset
+
+ HAL_FLASH_Lock();
+}
+
+uint8_t eeprom_read_byte(uint8_t *pos) {
+ eeprom_init();
+
+ uint16_t data = 0xFF;
+ uint16_t eeprom_address = unsigned(pos);
+ (void)EE_ReadVariable(eeprom_address, &data); // Data unchanged on error
+
+ return uint8_t(data);
+}
+
+void eeprom_read_block(void *__dst, const void *__src, size_t __n) {
+ eeprom_init();
+
+ uint16_t data = 0xFF;
+ uint16_t eeprom_address = unsigned(__src);
+ for (uint8_t c = 0; c < __n; c++) {
+ EE_ReadVariable(eeprom_address+c, &data);
+ *((uint8_t*)__dst + c) = data;
+ }
+}
+
+void eeprom_update_block(const void *__src, void *__dst, size_t __n) {
+
+}
+
+#endif // EEPROM_SETTINGS
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32_F4_F7/HAL.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL.cpp
new file mode 100644
index 0000000000..3602c0d86b
--- /dev/null
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL.cpp
@@ -0,0 +1,96 @@
+/**
+ * Marlin 3D Printer Firmware
+ *
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
+ * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
+ * Copyright (c) 2017 Victor Perez
+ *
+ * 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 .
+ *
+ */
+
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
+
+#include "HAL.h"
+
+//#include
+
+// ------------------------
+// Public Variables
+// ------------------------
+
+uint16_t HAL_adc_result;
+
+// ------------------------
+// Public functions
+// ------------------------
+
+/* VGPV Done with defines
+// disable interrupts
+void cli(void) { noInterrupts(); }
+
+// enable interrupts
+void sei(void) { interrupts(); }
+*/
+
+void HAL_clear_reset_source(void) { __HAL_RCC_CLEAR_RESET_FLAGS(); }
+
+uint8_t HAL_get_reset_source(void) {
+ if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET) return RST_WATCHDOG;
+ if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET) return RST_SOFTWARE;
+ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET) return RST_EXTERNAL;
+ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET) return RST_POWER_ON;
+ return 0;
+}
+
+void _delay_ms(const int delay_ms) { delay(delay_ms); }
+
+extern "C" {
+ extern unsigned int _ebss; // end of bss section
+}
+
+// return free memory between end of heap (or end bss) and whatever is current
+
+/*
+#include "wirish/syscalls.c"
+//extern caddr_t _sbrk(int incr);
+#ifndef CONFIG_HEAP_END
+extern char _lm_heap_end;
+#define CONFIG_HEAP_END ((caddr_t)&_lm_heap_end)
+#endif
+
+extern "C" {
+ static int freeMemory() {
+ char top = 't';
+ return &top - reinterpret_cast(sbrk(0));
+ }
+ int freeMemory() {
+ int free_memory;
+ int heap_end = (int)_sbrk(0);
+ free_memory = ((int)&free_memory) - ((int)heap_end);
+ return free_memory;
+ }
+}
+*/
+
+// ------------------------
+// ADC
+// ------------------------
+
+void HAL_adc_start_conversion(const uint8_t adc_pin) { HAL_adc_result = analogRead(adc_pin); }
+
+uint16_t HAL_adc_get_result(void) { return HAL_adc_result; }
+
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL.h b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL.h
similarity index 82%
rename from Marlin/src/HAL/HAL_STM32F7/HAL.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/HAL.h
index be99165111..59623ae706 100644
--- a/Marlin/src/HAL/HAL_STM32F7/HAL.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL.h
@@ -24,34 +24,34 @@
#define CPU_32_BIT
-#ifndef vsnprintf_P
- #define vsnprintf_P vsnprintf
-#endif
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include
-
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
-#include "fastio_STM32F7.h"
-#include "watchdog_STM32F7.h"
+#include "fastio_STM32_F4_F7.h"
+#include "watchdog_STM32_F4_F7.h"
-#include "HAL_timers_STM32F7.h"
+#include "HAL_timers_STM32_F4_F7.h"
#include "../../inc/MarlinConfigPre.h"
-// --------------------------------------------------------------------------
+#include
+
+#ifdef defined(STM32F4) && USBCON
+ #include
+#endif
+
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
//Serial override
//extern HalSerial usb_serial;
+#if defined(STM32F4) && SERIAL_PORT == 0
+ #error "Serial port 0 does not exist"
+#endif
+
#if !WITHIN(SERIAL_PORT, -1, 6)
#error "SERIAL_PORT must be from -1 to 6"
#endif
@@ -72,6 +72,9 @@
#endif
#ifdef SERIAL_PORT_2
+ #if defined(STM32F4) && SERIAL_PORT_2 == 0
+ #error "Serial port 0 does not exist"
+ #endif
#if !WITHIN(SERIAL_PORT_2, -1, 6)
#error "SERIAL_PORT_2 must be from -1 to 6"
#elif SERIAL_PORT_2 == SERIAL_PORT
@@ -125,22 +128,26 @@
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef int8_t pin_t;
-// --------------------------------------------------------------------------
+#ifdef STM32F4
+ #define HAL_SERVO_LIB libServo
+#endif
+
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
// Memory related
#define __bss_end __bss_end__
@@ -162,6 +169,7 @@ extern "C" {
*/
extern "C" char* _sbrk(int incr);
+
/*
static int freeMemory() {
volatile int top;
@@ -169,12 +177,16 @@ static int freeMemory() {
return top;
}
*/
+
static int freeMemory() {
volatile char top;
return &top - reinterpret_cast(_sbrk(0));
}
+//
// SPI: Extended functions which take a channel number (hardware SPI only)
+//
+
/** Write single byte to specified SPI channel */
void spiSend(uint32_t chan, byte b);
/** Write buffer to specified SPI channel */
@@ -182,19 +194,22 @@ void spiSend(uint32_t chan, const uint8_t* buf, size_t n);
/** Read single byte from specified SPI channel */
uint8_t spiRec(uint32_t chan);
-
+//
// EEPROM
+//
/**
- * TODO: Write all this eeprom stuff. Can emulate eeprom in flash as last resort.
- * Wire library should work for i2c eeproms.
+ * TODO: Write all this EEPROM stuff. Can emulate EEPROM in flash as last resort.
+ * Wire library should work for i2c EEPROMs.
*/
void eeprom_write_byte(uint8_t *pos, unsigned char value);
uint8_t eeprom_read_byte(uint8_t *pos);
void eeprom_read_block (void *__dst, const void *__src, size_t __n);
void eeprom_update_block (const void *__src, void *__dst, size_t __n);
+//
// ADC
+//
#define HAL_ANALOG_SELECT(pin) pinMode(pin, INPUT)
@@ -210,3 +225,8 @@ uint16_t HAL_adc_get_result(void);
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
+
+#ifdef STM32F4
+ #define JTAG_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY)
+ #define JTAGSWD_DISABLE() afio_cfg_debug_ports(AFIO_DEBUG_NONE)
+#endif
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.cpp
similarity index 91%
rename from Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.cpp
index 3be816ad34..5c585e663d 100644
--- a/Marlin/src/HAL/HAL_STM32F7/HAL_Servo_STM32F7.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.cpp
@@ -21,13 +21,13 @@
*
*/
-#ifdef STM32F7
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
#include "../../inc/MarlinConfig.h"
#if HAS_SERVOS
-#include "HAL_Servo_STM32F7.h"
+#include "HAL_Servo_STM32_F4_F7.h"
int8_t libServo::attach(const int pin) {
if (this->servoIndex >= MAX_SERVOS) return -1;
@@ -49,6 +49,6 @@ void libServo::move(const int value) {
#endif
}
}
-#endif // HAS_SERVOS
-#endif // STM32F7
+#endif // HAS_SERVOS
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.h b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.h
similarity index 89%
rename from Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.h
index 413c4995a5..c839c6a145 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL_Servo_STM32F4.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_Servo_STM32_F4_F7.h
@@ -22,7 +22,11 @@
*/
#pragma once
-#include
+//#ifdef STM32F7
+// #include <../../libraries/Servo/src/Servo.h>
+//#else
+ #include
+//#endif
// Inherit and expand on the official library
class libServo : public Servo {
@@ -31,7 +35,6 @@ class libServo : public Servo {
int8_t attach(const int pin, const int min, const int max);
void move(const int value);
private:
- uint16_t min_ticks;
- uint16_t max_ticks;
+ uint16_t min_ticks, max_ticks;
uint8_t servoIndex; // index into the channel data for this servo
};
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL_spi_STM32F4.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_spi_STM32_F4_F7.cpp
similarity index 79%
rename from Marlin/src/HAL/HAL_STM32F4/HAL_spi_STM32F4.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/HAL_spi_STM32_F4_F7.cpp
index 315995c016..ca7cc5b543 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL_spi_STM32F4.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_spi_STM32_F4_F7.cpp
@@ -27,14 +27,10 @@
*/
/**
- * Adapted to the STM32F4 HAL
+ * Adapted to the Marlin STM32F4/7 HAL
*/
-#if defined(STM32GENERIC) && defined(STM32F4)
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
#include "HAL.h"
#include "../shared/HAL_SPI.h"
@@ -43,28 +39,26 @@
#include "../../core/macros.h"
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
static SPISettings spiConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
#if ENABLED(SOFTWARE_SPI)
-
- // --------------------------------------------------------------------------
+ // ------------------------
// Software SPI
- // --------------------------------------------------------------------------
- #error "Software SPI not supported for STM32F4. Use hardware SPI."
-
+ // ------------------------
+ #error "Software SPI not supported for STM32F4/7. Use Hardware SPI."
#else
-// --------------------------------------------------------------------------
+// ------------------------
// Hardware SPI
-// --------------------------------------------------------------------------
+// ------------------------
/**
* VGPV SPI speed start and F_CPU/2, by default 72/2 = 36Mhz
@@ -127,13 +121,11 @@ uint8_t spiRec(void) {
*/
void spiRead(uint8_t* buf, uint16_t nbyte) {
SPI.beginTransaction(spiConfig);
-
#ifdef STM32GENERIC
SPI.dmaTransfer(0, const_cast(buf), nbyte);
#else
SPI.transfer((uint8_t*)buf, nbyte);
#endif
-
SPI.endTransaction();
}
@@ -161,16 +153,13 @@ void spiSend(uint8_t b) {
void spiSendBlock(uint8_t token, const uint8_t* buf) {
SPI.beginTransaction(spiConfig);
SPI.transfer(token);
-
#ifdef STM32GENERIC
SPI.dmaSend(const_cast(buf), 512);
#else
SPI.transfer((uint8_t*)buf, nullptr, 512);
#endif
-
SPI.endTransaction();
}
#endif // SOFTWARE_SPI
-
-#endif // STM32GENERIC && STM32F4
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.h b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_timers_STM32_F4_F7.h
similarity index 79%
rename from Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/HAL_timers_STM32_F4_F7.h
index cc02fda24f..e7fcd6c7c6 100644
--- a/Marlin/src/HAL/HAL_STM32F7/watchdog_STM32F7.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/HAL_timers_STM32_F4_F7.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
+ * Copyright (c) 2017 Victor Perez
*
* 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
@@ -21,7 +21,8 @@
*/
#pragma once
-extern IWDG_HandleTypeDef hiwdg;
-
-void watchdog_init();
-void watchdog_reset();
+#ifdef STM32F4
+ #include "STM32F4/HAL_timers_STM32F4.h"
+#else
+ #include "STM32F7/HAL_timers_STM32F7.h"
+#endif
diff --git a/Marlin/src/HAL/HAL_STM32_F4_F7/README.md b/Marlin/src/HAL/HAL_STM32_F4_F7/README.md
new file mode 100644
index 0000000000..3b5a9ab02e
--- /dev/null
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/README.md
@@ -0,0 +1,6 @@
+# This HAL is for...
+
+ - STM32F407 MCU with STM32Generic Arduino core by danieleff.
+ - STM32F765 board "The Borg" with STM32Generic.
+
+See the `README.md` files in HAL_STM32F4 and HAL_STM32F7 for the specifics of those hals.
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.cpp
similarity index 75%
rename from Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.cpp
index 8f1d2603ee..85ab5fb896 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.cpp
@@ -22,52 +22,28 @@
#if defined(STM32GENERIC) && defined(STM32F4)
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
-
+#include "../HAL.h"
#include "HAL_timers_STM32F4.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define NUM_HARDWARE_TIMERS 2
#define STEP_TIMER_IRQ_ID TIM5_IRQn
#define TEMP_TIMER_IRQ_ID TIM7_IRQn
//#define PRESCALER 1
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
-stm32f4_timer_t TimerHandle[NUM_HARDWARE_TIMERS];
+stm32_timer_t TimerHandle[NUM_HARDWARE_TIMERS];
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
bool timers_initialized[NUM_HARDWARE_TIMERS] = {false};
diff --git a/Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.h b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.h
similarity index 82%
rename from Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.h
index 30161bfc4c..726207fbcf 100644
--- a/Marlin/src/HAL/HAL_STM32F4/HAL_timers_STM32F4.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/HAL_timers_STM32F4.h
@@ -21,15 +21,11 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -75,29 +71,29 @@
#endif
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
#ifdef STM32GENERIC
typedef struct {
TIM_HandleTypeDef handle;
uint32_t callback;
} tTimerConfig;
- typedef tTimerConfig stm32f4_timer_t;
+ typedef tTimerConfig stm32_timer_t;
#else
- typedef stimer_t stm32f4_timer_t;
+ typedef stimer_t stm32_timer_t;
#endif
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
-extern stm32f4_timer_t TimerHandle[];
+extern stm32_timer_t TimerHandle[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_enable_interrupt(const uint8_t timer_num);
diff --git a/Marlin/src/HAL/HAL_STM32F4/README.md b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/README.md
similarity index 100%
rename from Marlin/src/HAL/HAL_STM32F4/README.md
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F4/README.md
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.cpp
similarity index 72%
rename from Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.cpp
index df4d9c07d2..8da2fc0cfa 100644
--- a/Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.cpp
@@ -20,56 +20,30 @@
*
*/
-#ifdef STM32F7
-
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include "HAL.h"
+#if defined(STM32GENERIC) && defined(STM32F7)
+#include "../HAL.h"
#include "HAL_timers_STM32F7.h"
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Local defines
-// --------------------------------------------------------------------------
+// ------------------------
#define NUM_HARDWARE_TIMERS 2
//#define PRESCALER 1
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
+// ------------------------
tTimerConfig timerConfig[NUM_HARDWARE_TIMERS];
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
-
-bool timers_initialized[NUM_HARDWARE_TIMERS] = {false};
+bool timers_initialized[NUM_HARDWARE_TIMERS] = { false };
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
@@ -153,4 +127,4 @@ bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
return NVIC->ISER[IRQ_Id >> 5] & _BV32(IRQ_Id & 0x1F);
}
-#endif // STM32F7
+#endif // STM32GENERIC && STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.h b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.h
similarity index 81%
rename from Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.h
index 01fb02d178..38ecde30bb 100644
--- a/Marlin/src/HAL/HAL_STM32F7/HAL_timers_STM32F7.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/HAL_timers_STM32F7.h
@@ -21,15 +21,11 @@
*/
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -61,17 +57,17 @@
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define TEMP_ISR_ENABLED() HAL_timer_interrupt_enabled(TEMP_TIMER_NUM)
-// TODO change this
+// TODO change this
extern void TC5_Handler();
extern void TC7_Handler();
#define HAL_STEP_TIMER_ISR() void TC5_Handler()
#define HAL_TEMP_TIMER_ISR() void TC7_Handler()
-// --------------------------------------------------------------------------
+// ------------------------
// Types
-// --------------------------------------------------------------------------
+// ------------------------
typedef struct {
TIM_HandleTypeDef timerdef;
@@ -79,15 +75,15 @@ typedef struct {
uint32_t callback;
} tTimerConfig;
-// --------------------------------------------------------------------------
+// ------------------------
// Public Variables
-// --------------------------------------------------------------------------
+// ------------------------
//extern const tTimerConfig timerConfig[];
-// --------------------------------------------------------------------------
+// ------------------------
// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_enable_interrupt(const uint8_t timer_num);
diff --git a/Marlin/src/HAL/HAL_STM32F7/README.md b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/README.md
similarity index 75%
rename from Marlin/src/HAL/HAL_STM32F7/README.md
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/README.md
index 2fb39bf25a..23155b425e 100644
--- a/Marlin/src/HAL/HAL_STM32F7/README.md
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/README.md
@@ -4,7 +4,7 @@
https://github.com/danieleff/STM32GENERIC
-but i have not committed the changes needed for the Borg there yet, so please use:
+but I haven't committed the changes needed for the Borg there yet, so please use:
https://github.com/Spawn32/STM32GENERIC
@@ -15,9 +15,9 @@ Download the latest GNU ARM Embedded Toolchain:
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads
-(The one in Arduino dosen't support STM32F7).
+(The one in Arduino doesn't support STM32F7).
-Change compiler.path in platform.txt to point to that you downloaded.
+Change compiler.path in platform.txt to point to the one you downloaded.
# This HAL is in development.
# Currently only tested on "The Borg".
@@ -25,4 +25,3 @@ Change compiler.path in platform.txt to point to that you downloaded.
You will also need the latest Arduino 1.9.0-beta or newer.
This HAL is a modified version of Chris Barr's Picoprint STM32F4 HAL, so shouldn't be to hard to get it to work on a F4.
-
diff --git a/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.cpp
similarity index 97%
rename from Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.cpp
index 99cadbde16..2f60bf3546 100644
--- a/Marlin/src/HAL/HAL_STM32F7/TMC2660.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.cpp
@@ -25,22 +25,22 @@
*
*/
-//#include
+#if defined(STM32GENERIC) && defined(STM32F7)
-#ifdef STM32F7
+#include "../../../inc/MarlinConfigPre.h"
+
+#if HAS_DRIVER(TMC2660)
#include
#include
#include "TMC2660.h"
-#include "HAL.h"
-#include "../../core/serial.h"
-#include "../../inc/MarlinConfig.h"
-#include "../../Marlin.h"
-#include "../../module/stepper_indirection.h"
-#include "../../module/printcounter.h"
-#include "../../libs/duration_t.h"
-#include "../../libs/hex_print_routines.h"
+#include "../../../inc/MarlinConfig.h"
+#include "../../../Marlin.h"
+#include "../../../module/stepper_indirection.h"
+#include "../../../module/printcounter.h"
+#include "../../../libs/duration_t.h"
+#include "../../../libs/hex_print_routines.h"
//some default values used in initialization
#define DEFAULT_MICROSTEPPING_VALUE 32
@@ -630,19 +630,19 @@ uint16_t TMC26XStepper::getCoolStepLowerSgThreshold() {
}
uint16_t TMC26XStepper::getCoolStepUpperSgThreshold() {
- return (uint8_t)((cool_step_register_value & SE_MAX_PATTERN) >> 8) << 5;
+ return uint8_t((cool_step_register_value & SE_MAX_PATTERN) >> 8) << 5;
}
uint8_t TMC26XStepper::getCoolStepCurrentIncrementSize() {
- return (uint8_t)((cool_step_register_value & CURRENT_DOWN_STEP_SPEED_PATTERN) >> 13);
+ return uint8_t((cool_step_register_value & CURRENT_DOWN_STEP_SPEED_PATTERN) >> 13);
}
uint8_t TMC26XStepper::getCoolStepNumberOfSGReadings() {
- return (uint8_t)((cool_step_register_value & SE_CURRENT_STEP_WIDTH_PATTERN) >> 5);
+ return uint8_t((cool_step_register_value & SE_CURRENT_STEP_WIDTH_PATTERN) >> 5);
}
uint8_t TMC26XStepper::getCoolStepLowerCurrentLimit() {
- return (uint8_t)((cool_step_register_value & MINIMUM_CURRENT_FOURTH) >> 15);
+ return uint8_t((cool_step_register_value & MINIMUM_CURRENT_FOURTH) >> 15);
}
void TMC26XStepper::setEnabled(boolean enabled) {
@@ -895,4 +895,6 @@ inline void TMC26XStepper::send262(uint32_t datagram) {
driver_status_result = i_datagram;
}
-#endif // STM32F7
+#endif // HAS_DRIVER(TMC2660)
+
+#endif // STM32GENERIC && STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/TMC2660.h b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.h
similarity index 99%
rename from Marlin/src/HAL/HAL_STM32F7/TMC2660.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.h
index 1b44a4d5f5..9753aa3407 100644
--- a/Marlin/src/HAL/HAL_STM32F7/TMC2660.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.h
@@ -140,7 +140,6 @@ class TMC26XStepper {
*/
void un_start();
-
/*!
* \brief Set the rotation speed in RPM.
* \param whatSpeed the desired speed in RPM.
diff --git a/Marlin/src/HAL/HAL_STM32F4/SanityCheck.h b/Marlin/src/HAL/HAL_STM32_F4_F7/SanityCheck.h
similarity index 87%
rename from Marlin/src/HAL/HAL_STM32F4/SanityCheck.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/SanityCheck.h
index e9eb8fa826..7b8d29aa7d 100644
--- a/Marlin/src/HAL/HAL_STM32F4/SanityCheck.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/SanityCheck.h
@@ -22,14 +22,14 @@
#pragma once
/**
- * Test STM32F4-specific configuration values for errors at compile-time.
+ * Test STM32F4/7-specific configuration values for errors at compile-time.
*/
//#if ENABLED(SPINDLE_LASER_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
// #error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
//#endif
#if ENABLED(EMERGENCY_PARSER)
- #error "EMERGENCY_PARSER is not yet implemented for STM32F4. Disable EMERGENCY_PARSER to continue."
+ #error "EMERGENCY_PARSER is not yet implemented for STM32F4/7. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(FAST_PWM_FAN)
diff --git a/Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.cpp
similarity index 74%
rename from Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.cpp
index 10b3219e9a..d9df853e99 100644
--- a/Marlin/src/HAL/HAL_STM32F7/EEPROM_Emul/eeprom_emul.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.cpp
@@ -8,8 +8,8 @@
******************************************************************************
* @attention
*
- * © Copyright © 2016 STMicroelectronics International N.V.
- * All rights reserved.
+ * Copyright © 2016 STMicroelectronics International N.V.
+ * All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted, provided that the following conditions are met:
@@ -47,14 +47,11 @@
/** @addtogroup EEPROM_Emulation
* @{
*/
-#ifdef STM32F7
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
/* Includes ------------------------------------------------------------------*/
#include "eeprom_emul.h"
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Global variable used to store variable value in read sequence */
@@ -79,76 +76,66 @@ static uint16_t EE_VerifyPageFullyErased(uint32_t Address);
* - FLASH_COMPLETE: on success
*/
uint16_t EE_Initialize(void) {
- uint16_t PageStatus0 = 6, PageStatus1 = 6;
- uint16_t VarIdx = 0;
- uint16_t EepromStatus = 0, ReadStatus = 0;
- int16_t x = -1;
- HAL_StatusTypeDef FlashStatus;
- uint32_t SectorError = 0;
+ /* Get Page0 and Page1 status */
+ uint16_t PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS),
+ PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
+
FLASH_EraseInitTypeDef pEraseInit;
-
-
- /* Get Page0 status */
- PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
- /* Get Page1 status */
- PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
-
pEraseInit.TypeErase = TYPEERASE_SECTORS;
pEraseInit.Sector = PAGE0_ID;
pEraseInit.NbSectors = 1;
pEraseInit.VoltageRange = VOLTAGE_RANGE;
/* Check for invalid header states and repair if necessary */
+ uint32_t SectorError;
switch (PageStatus0) {
case ERASED:
if (PageStatus1 == VALID_PAGE) { /* Page0 erased, Page1 valid */
- /* Erase Page0 */
+ /* Erase Page0 */
if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
}
}
else if (PageStatus1 == RECEIVE_DATA) { /* Page0 erased, Page1 receive */
/* Erase Page0 */
if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+ HAL_StatusTypeDef fStat = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
/* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ if (fStat != HAL_OK) return fStat;
}
/* Mark Page1 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE1_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE1_BASE_ADDRESS, VALID_PAGE);
}
else { /* First EEPROM access (Page0&1 are erased) or invalid state -> format EEPROM */
/* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return EE_Format();
}
break;
case RECEIVE_DATA:
if (PageStatus1 == VALID_PAGE) { /* Page0 receive, Page1 valid */
/* Transfer data from Page1 to Page0 */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
+ int16_t x = -1;
+ for (uint16_t VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
if (( *(__IO uint16_t*)(PAGE0_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
x = VarIdx;
if (VarIdx != x) {
/* Read the last variables' updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+ uint16_t ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
/* In case variable corresponding to the virtual address was found */
if (ReadStatus != 0x1) {
/* Transfer the variable to the Page0 */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
+ uint16_t EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
/* If program operation was failed, a Flash error code is returned */
if (EepromStatus != HAL_OK) return EepromStatus;
}
}
}
/* Mark Page0 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
+ HAL_StatusTypeDef FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
/* If program operation was failed, a Flash error code is returned */
if (FlashStatus != HAL_OK) return FlashStatus;
pEraseInit.Sector = PAGE1_ID;
@@ -156,9 +143,8 @@ uint16_t EE_Initialize(void) {
pEraseInit.VoltageRange = VOLTAGE_RANGE;
/* Erase Page1 */
if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
}
}
else if (PageStatus1 == ERASED) { /* Page0 receive, Page1 erased */
@@ -167,20 +153,18 @@ uint16_t EE_Initialize(void) {
pEraseInit.VoltageRange = VOLTAGE_RANGE;
/* Erase Page1 */
if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+ HAL_StatusTypeDef fStat = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
/* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ if (fStat != HAL_OK) return fStat;
}
/* Mark Page0 as valid */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, PAGE0_BASE_ADDRESS, VALID_PAGE);
}
else { /* Invalid state -> format eeprom */
/* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return EE_Format();
}
break;
@@ -204,17 +188,18 @@ uint16_t EE_Initialize(void) {
}
else { /* Page0 valid, Page1 receive */
/* Transfer data from Page0 to Page1 */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
+ int16_t x = -1;
+ for (uint16_t VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
if ((*(__IO uint16_t*)(PAGE1_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
x = VarIdx;
if (VarIdx != x) {
/* Read the last variables' updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+ uint16_t ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
/* In case variable corresponding to the virtual address was found */
if (ReadStatus != 0x1) {
/* Transfer the variable to the Page1 */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
+ uint16_t EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
/* If program operation was failed, a Flash error code is returned */
if (EepromStatus != HAL_OK) return EepromStatus;
}
@@ -229,19 +214,16 @@ uint16_t EE_Initialize(void) {
pEraseInit.VoltageRange = VOLTAGE_RANGE;
/* Erase Page0 */
if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, simply return the result */
+ return HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
}
}
break;
default: /* Any other state -> format eeprom */
/* Erase both Page0 and Page1 and set Page0 as valid page */
- FlashStatus = EE_Format();
- /* If erase/program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
- break;
+ /* As the last operation, simply return the result */
+ return EE_Format();
}
return HAL_OK;
@@ -259,11 +241,10 @@ uint16_t EE_Initialize(void) {
*/
uint16_t EE_VerifyPageFullyErased(uint32_t Address) {
uint32_t ReadStatus = 1;
- uint16_t AddressValue = 0x5555;
/* Check each active page address starting from end */
while (Address <= PAGE0_END_ADDRESS) {
/* Get the current location content to be compared with virtual address */
- AddressValue = (*(__IO uint16_t*)Address);
+ uint16_t AddressValue = (*(__IO uint16_t*)Address);
/* Compare the read address with the virtual address */
if (AddressValue != ERASED) {
/* In case variable value is read, reset ReadStatus flag */
@@ -288,26 +269,22 @@ uint16_t EE_VerifyPageFullyErased(uint32_t Address) {
* - NO_VALID_PAGE: if no valid page was found.
*/
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data) {
- uint16_t ValidPage = PAGE0;
- uint16_t AddressValue = 0x5555, ReadStatus = 1;
- uint32_t Address = EEPROM_START_ADDRESS, PageStartAddress = EEPROM_START_ADDRESS;
+ uint16_t ReadStatus = 1;
/* Get active Page for read operation */
- ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
+ uint16_t ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
/* Check if there is no valid page */
if (ValidPage == NO_VALID_PAGE) return NO_VALID_PAGE;
- /* Get the valid Page start Address */
- PageStartAddress = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
-
- /* Get the valid Page end Address */
- Address = (uint32_t)((EEPROM_START_ADDRESS - 2) + (uint32_t)((1 + ValidPage) * PAGE_SIZE));
+ /* Get the valid Page start and end Addresses */
+ uint32_t PageStartAddress = uint32_t(EEPROM_START_ADDRESS) + uint32_t(ValidPage * (PAGE_SIZE)),
+ Address = PageStartAddress + PAGE_SIZE - 2;
/* Check each active page address starting from end */
- while (Address > (PageStartAddress + 2)) {
+ while (Address > PageStartAddress + 2) {
/* Get the current location content to be compared with virtual address */
- AddressValue = (*(__IO uint16_t*)Address);
+ uint16_t AddressValue = (*(__IO uint16_t*)Address);
/* Compare the read address with the virtual address */
if (AddressValue == VirtAddress) {
@@ -353,16 +330,17 @@ uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data) {
* EEPROM formating
*/
static HAL_StatusTypeDef EE_Format(void) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint32_t SectorError = 0;
FLASH_EraseInitTypeDef pEraseInit;
-
pEraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
pEraseInit.Sector = PAGE0_ID;
pEraseInit.NbSectors = 1;
pEraseInit.VoltageRange = VOLTAGE_RANGE;
+
+ HAL_StatusTypeDef FlashStatus; // = HAL_OK
+
/* Erase Page0 */
if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) {
+ uint32_t SectorError;
FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
/* If erase operation was failed, a Flash error code is returned */
if (FlashStatus != HAL_OK) return FlashStatus;
@@ -375,9 +353,9 @@ static HAL_StatusTypeDef EE_Format(void) {
pEraseInit.Sector = PAGE1_ID;
/* Erase Page1 */
if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) {
- FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
- /* If erase operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
+ /* As the last operation, just return the result code */
+ uint32_t SectorError;
+ return HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
}
return HAL_OK;
@@ -393,26 +371,20 @@ static HAL_StatusTypeDef EE_Format(void) {
* of no valid page was found
*/
static uint16_t EE_FindValidPage(uint8_t Operation) {
- uint16_t PageStatus0 = 6, PageStatus1 = 6;
-
- /* Get Page0 actual status */
- PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
-
- /* Get Page1 actual status */
- PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
+ /* Get Page0 and Page1 actual status */
+ uint16_t PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS),
+ PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
/* Write or read operation */
switch (Operation) {
case WRITE_IN_VALID_PAGE: /* ---- Write operation ---- */
if (PageStatus1 == VALID_PAGE) {
/* Page0 receiving data */
- if (PageStatus0 == RECEIVE_DATA) return PAGE0; /* Page0 valid */
- else return PAGE1; /* Page1 valid */
+ return (PageStatus0 == RECEIVE_DATA) ? PAGE0 : PAGE1;
}
else if (PageStatus0 == VALID_PAGE) {
/* Page1 receiving data */
- if (PageStatus1 == RECEIVE_DATA) return PAGE1; /* Page1 valid */
- else return PAGE0; /* Page0 valid */
+ return (PageStatus1 == RECEIVE_DATA) ? PAGE1 : PAGE0;
}
else
return NO_VALID_PAGE; /* No valid Page */
@@ -441,34 +413,26 @@ static uint16_t EE_FindValidPage(uint8_t Operation) {
* - Flash error code: on write Flash error
*/
static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Data) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint16_t ValidPage = PAGE0;
- uint32_t Address = EEPROM_START_ADDRESS, PageEndAddress = EEPROM_START_ADDRESS+PAGE_SIZE;
-
/* Get valid Page for write operation */
- ValidPage = EE_FindValidPage(WRITE_IN_VALID_PAGE);
+ uint16_t ValidPage = EE_FindValidPage(WRITE_IN_VALID_PAGE);
/* Check if there is no valid page */
if (ValidPage == NO_VALID_PAGE) return NO_VALID_PAGE;
- /* Get the valid Page start Address */
- Address = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
-
- /* Get the valid Page end Address */
- PageEndAddress = (uint32_t)((EEPROM_START_ADDRESS - 1) + (uint32_t)((ValidPage + 1) * PAGE_SIZE));
+ /* Get the valid Page start and end Addresses */
+ uint32_t Address = uint32_t(EEPROM_START_ADDRESS) + uint32_t(ValidPage * (PAGE_SIZE)),
+ PageEndAddress = Address + PAGE_SIZE - 1;
/* Check each active page address starting from begining */
while (Address < PageEndAddress) {
/* Verify if Address and Address+2 contents are 0xFFFFFFFF */
if ((*(__IO uint32_t*)Address) == 0xFFFFFFFF) {
/* Set variable data */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address, Data);
+ HAL_StatusTypeDef FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address, Data);
/* If program operation was failed, a Flash error code is returned */
if (FlashStatus != HAL_OK) return FlashStatus;
- /* Set variable virtual address */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address + 2, VirtAddress);
- /* Return program operation status */
- return FlashStatus;
+ /* Set variable virtual address, return status */
+ return HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, Address + 2, VirtAddress);
}
else /* Next address location */
Address += 4;
@@ -490,16 +454,10 @@ static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Da
* - Flash error code: on write Flash error
*/
static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data) {
- HAL_StatusTypeDef FlashStatus = HAL_OK;
- uint32_t NewPageAddress = EEPROM_START_ADDRESS;
- uint16_t OldPageId=0;
- uint16_t ValidPage = PAGE0, VarIdx = 0;
- uint16_t EepromStatus = 0, ReadStatus = 0;
- uint32_t SectorError = 0;
- FLASH_EraseInitTypeDef pEraseInit;
-
/* Get active Page for read operation */
- ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
+ uint16_t ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
+ uint32_t NewPageAddress = EEPROM_START_ADDRESS;
+ uint16_t OldPageId = 0;
if (ValidPage == PAGE1) { /* Page1 valid */
/* New page address where variable will be moved to */
@@ -517,20 +475,20 @@ static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data) {
return NO_VALID_PAGE; /* No valid Page */
/* Set the new Page status to RECEIVE_DATA status */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, RECEIVE_DATA);
+ HAL_StatusTypeDef FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, RECEIVE_DATA);
/* If program operation was failed, a Flash error code is returned */
if (FlashStatus != HAL_OK) return FlashStatus;
/* Write the variable passed as parameter in the new active page */
- EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
+ uint16_t EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
/* If program operation was failed, a Flash error code is returned */
if (EepromStatus != HAL_OK) return EepromStatus;
/* Transfer process: transfer variables from old to the new active page */
- for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
+ for (uint16_t VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++) {
if (VirtAddVarTab[VarIdx] != VirtAddress) { /* Check each variable except the one passed as parameter */
/* Read the other last variable updates */
- ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+ uint16_t ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
/* In case variable corresponding to the virtual address was found */
if (ReadStatus != 0x1) {
/* Transfer the variable to the new active page */
@@ -541,26 +499,24 @@ static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data) {
}
}
+ FLASH_EraseInitTypeDef pEraseInit;
pEraseInit.TypeErase = TYPEERASE_SECTORS;
pEraseInit.Sector = OldPageId;
pEraseInit.NbSectors = 1;
pEraseInit.VoltageRange = VOLTAGE_RANGE;
/* Erase the old Page: Set old Page status to ERASED status */
+ uint32_t SectorError;
FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
/* If erase operation was failed, a Flash error code is returned */
if (FlashStatus != HAL_OK) return FlashStatus;
/* Set new Page status to VALID_PAGE status */
- FlashStatus = HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, VALID_PAGE);
- /* If program operation was failed, a Flash error code is returned */
- if (FlashStatus != HAL_OK) return FlashStatus;
-
- /* Return last operation flash status */
- return FlashStatus;
+ /* As the last operation, just return the result code */
+ return HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, VALID_PAGE);
}
-#endif // STM32F7
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
/**
* @}
diff --git a/Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.h b/Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.h
similarity index 64%
rename from Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.h
index fe0da6387b..90aeeee5a3 100644
--- a/Marlin/src/HAL/HAL_STM32F4/EEPROM_Emul/eeprom_emul.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/eeprom_emul.h
@@ -8,7 +8,7 @@
******************************************************************************
* @attention
*
- * © Copyright � 2016 STMicroelectronics International N.V.
+ * Copyright © 2016 STMicroelectronics International N.V.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -45,63 +45,68 @@
******************************************************************************/
#pragma once
-// --------------------------------------------------------------------------
+// ------------------------
// Includes
-// --------------------------------------------------------------------------
-#include "../../../inc/MarlinConfig.h"
-#include "../HAL.h"
+// ------------------------
+
+#include "../../inc/MarlinConfig.h"
+#include "HAL.h"
/* Exported constants --------------------------------------------------------*/
/* EEPROM emulation firmware error codes */
-#define EE_OK (uint32_t)HAL_OK
-#define EE_ERROR (uint32_t)HAL_ERROR
-#define EE_BUSY (uint32_t)HAL_BUSY
-#define EE_TIMEOUT (uint32_t)HAL_TIMEOUT
+#define EE_OK uint32_t(HAL_OK)
+#define EE_ERROR uint32_t(HAL_ERROR)
+#define EE_BUSY uint32_t(HAL_BUSY)
+#define EE_TIMEOUT uint32_t(HAL_TIMEOUT)
/* Define the size of the sectors to be used */
-#define PAGE_SIZE (uint32_t)0x4000 /* Page size = 16KByte */
+#define PAGE_SIZE uint32_t(0x4000) /* Page size = 16KByte */
/* Device voltage range supposed to be [2.7V to 3.6V], the operation will
be done by word */
-#define VOLTAGE_RANGE (uint8_t)VOLTAGE_RANGE_3
+#define VOLTAGE_RANGE uint8_t(VOLTAGE_RANGE_3)
/* EEPROM start address in Flash */
-#define EEPROM_START_ADDRESS ((uint32_t)0x08078000) /* EEPROM emulation start address:
- after 480KByte of used Flash memory */
+#ifdef STM32F7
+ #define EEPROM_START_ADDRESS uint32_t(0x08100000) /* EEPROM emulation start address:
+ from sector2 : after 16KByte of used
+ Flash memory */
+#else
+ #define EEPROM_START_ADDRESS uint32_t(0x08078000) /* EEPROM emulation start address:
+ after 480KByte of used Flash memory */
+#endif
/* Pages 0 and 1 base and end addresses */
-#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x0000))
-#define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))
-#define PAGE0_ID FLASH_SECTOR_1
+#define PAGE0_BASE_ADDRESS uint32_t(EEPROM_START_ADDRESS + 0x0000)
+#define PAGE0_END_ADDRESS uint32_t(EEPROM_START_ADDRESS + PAGE_SIZE - 1)
+#define PAGE0_ID FLASH_SECTOR_1
-#define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x4000))
-#define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))
-#define PAGE1_ID FLASH_SECTOR_2
+#define PAGE1_BASE_ADDRESS uint32_t(EEPROM_START_ADDRESS + 0x4000)
+#define PAGE1_END_ADDRESS uint32_t(EEPROM_START_ADDRESS + 2 * (PAGE_SIZE) - 1)
+#define PAGE1_ID FLASH_SECTOR_2
/* Used Flash pages for EEPROM emulation */
-#define PAGE0 ((uint16_t)0x0000)
-#define PAGE1 ((uint16_t)0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/
+#define PAGE0 uint16_t(0x0000)
+#define PAGE1 uint16_t(0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/
/* No valid page define */
-#define NO_VALID_PAGE ((uint16_t)0x00AB)
+#define NO_VALID_PAGE uint16_t(0x00AB)
/* Page status definitions */
-#define ERASED ((uint16_t)0xFFFF) /* Page is empty */
-#define RECEIVE_DATA ((uint16_t)0xEEEE) /* Page is marked to receive data */
-#define VALID_PAGE ((uint16_t)0x0000) /* Page containing valid data */
+#define ERASED uint16_t(0xFFFF) /* Page is empty */
+#define RECEIVE_DATA uint16_t(0xEEEE) /* Page is marked to receive data */
+#define VALID_PAGE uint16_t(0x0000) /* Page containing valid data */
/* Valid pages in read and write defines */
-#define READ_FROM_VALID_PAGE ((uint8_t)0x00)
-#define WRITE_IN_VALID_PAGE ((uint8_t)0x01)
+#define READ_FROM_VALID_PAGE uint8_t(0x00)
+#define WRITE_IN_VALID_PAGE uint8_t(0x01)
/* Page full define */
-#define PAGE_FULL ((uint8_t)0x80)
+#define PAGE_FULL uint8_t(0x80)
/* Variables' number */
-#define NB_OF_VAR ((uint16_t)4096)
+#define NB_OF_VAR uint16_t(4096)
-/* Exported types ------------------------------------------------------------*/
-/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
uint16_t EE_Initialize(void);
uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);
diff --git a/Marlin/src/HAL/HAL_STM32F4/endstop_interrupts.h b/Marlin/src/HAL/HAL_STM32_F4_F7/endstop_interrupts.h
similarity index 100%
rename from Marlin/src/HAL/HAL_STM32F4/endstop_interrupts.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/endstop_interrupts.h
diff --git a/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h b/Marlin/src/HAL/HAL_STM32_F4_F7/fastio_STM32_F4_F7.h
similarity index 79%
rename from Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/fastio_STM32_F4_F7.h
index 81f363609f..4071666060 100644
--- a/Marlin/src/HAL/HAL_STM32F7/fastio_STM32F7.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/fastio_STM32_F4_F7.h
@@ -23,7 +23,7 @@
#pragma once
/**
- * Fast I/O interfaces for STM32F7
+ * Fast I/O interfaces for STM32F4/7
* These use GPIO functions instead of Direct Port Manipulation, as on AVR.
*/
@@ -63,10 +63,8 @@
#define PORTC 2
#define PORTD 3
#define PORTE 4
-#define PORTF 5
-#define PORTG 6
-#define _STM32_PIN(_PORT,_PIN) ((PORT##_PORT * 16) + _PIN)
+#define _STM32_PIN(P,PN) ((PORT##P * 16) + PN)
#define PA0 _STM32_PIN(A, 0)
#define PA1 _STM32_PIN(A, 1)
@@ -153,36 +151,42 @@
#define PE14 _STM32_PIN(E, 14)
#define PE15 _STM32_PIN(E, 15)
-#define PF0 _STM32_PIN(F, 0)
-#define PF1 _STM32_PIN(F, 1)
-#define PF2 _STM32_PIN(F, 2)
-#define PF3 _STM32_PIN(F, 3)
-#define PF4 _STM32_PIN(F, 4)
-#define PF5 _STM32_PIN(F, 5)
-#define PF6 _STM32_PIN(F, 6)
-#define PF7 _STM32_PIN(F, 7)
-#define PF8 _STM32_PIN(F, 8)
-#define PF9 _STM32_PIN(F, 9)
-#define PF10 _STM32_PIN(F, 10)
-#define PF11 _STM32_PIN(F, 11)
-#define PF12 _STM32_PIN(F, 12)
-#define PF13 _STM32_PIN(F, 13)
-#define PF14 _STM32_PIN(F, 14)
-#define PF15 _STM32_PIN(F, 15)
+#ifdef STM32F7
+ #define PORTF 5
+ #define PORTG 6
-#define PG0 _STM32_PIN(G, 0)
-#define PG1 _STM32_PIN(G, 1)
-#define PG2 _STM32_PIN(G, 2)
-#define PG3 _STM32_PIN(G, 3)
-#define PG4 _STM32_PIN(G, 4)
-#define PG5 _STM32_PIN(G, 5)
-#define PG6 _STM32_PIN(G, 6)
-#define PG7 _STM32_PIN(G, 7)
-#define PG8 _STM32_PIN(G, 8)
-#define PG9 _STM32_PIN(G, 9)
-#define PG10 _STM32_PIN(G, 10)
-#define PG11 _STM32_PIN(G, 11)
-#define PG12 _STM32_PIN(G, 12)
-#define PG13 _STM32_PIN(G, 13)
-#define PG14 _STM32_PIN(G, 14)
-#define PG15 _STM32_PIN(G, 15)
+ #define PF0 _STM32_PIN(F, 0)
+ #define PF1 _STM32_PIN(F, 1)
+ #define PF2 _STM32_PIN(F, 2)
+ #define PF3 _STM32_PIN(F, 3)
+ #define PF4 _STM32_PIN(F, 4)
+ #define PF5 _STM32_PIN(F, 5)
+ #define PF6 _STM32_PIN(F, 6)
+ #define PF7 _STM32_PIN(F, 7)
+ #define PF8 _STM32_PIN(F, 8)
+ #define PF9 _STM32_PIN(F, 9)
+ #define PF10 _STM32_PIN(F, 10)
+ #define PF11 _STM32_PIN(F, 11)
+ #define PF12 _STM32_PIN(F, 12)
+ #define PF13 _STM32_PIN(F, 13)
+ #define PF14 _STM32_PIN(F, 14)
+ #define PF15 _STM32_PIN(F, 15)
+
+ #define PG0 _STM32_PIN(G, 0)
+ #define PG1 _STM32_PIN(G, 1)
+ #define PG2 _STM32_PIN(G, 2)
+ #define PG3 _STM32_PIN(G, 3)
+ #define PG4 _STM32_PIN(G, 4)
+ #define PG5 _STM32_PIN(G, 5)
+ #define PG6 _STM32_PIN(G, 6)
+ #define PG7 _STM32_PIN(G, 7)
+ #define PG8 _STM32_PIN(G, 8)
+ #define PG9 _STM32_PIN(G, 9)
+ #define PG10 _STM32_PIN(G, 10)
+ #define PG11 _STM32_PIN(G, 11)
+ #define PG12 _STM32_PIN(G, 12)
+ #define PG13 _STM32_PIN(G, 13)
+ #define PG14 _STM32_PIN(G, 14)
+ #define PG15 _STM32_PIN(G, 15)
+
+#endif // STM32GENERIC && STM32F7
diff --git a/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/persistent_store_eeprom.cpp
similarity index 91%
rename from Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/persistent_store_eeprom.cpp
index 6d7d103235..4bd86d225d 100644
--- a/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/persistent_store_eeprom.cpp
@@ -21,7 +21,7 @@
*
*/
-#ifdef STM32F7
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
#include "../../inc/MarlinConfigPre.h"
@@ -52,10 +52,10 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
-bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc) {
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
- *value = c;
+ if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
@@ -66,4 +66,4 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
size_t PersistentStore::capacity() { return E2END + 1; }
#endif // EEPROM_SETTINGS
-#endif // STM32F7
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32F7/pinsDebug.h b/Marlin/src/HAL/HAL_STM32_F4_F7/pinsDebug.h
similarity index 94%
rename from Marlin/src/HAL/HAL_STM32F7/pinsDebug.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/pinsDebug.h
index a8b632870a..342b875561 100644
--- a/Marlin/src/HAL/HAL_STM32F7/pinsDebug.h
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/pinsDebug.h
@@ -23,5 +23,5 @@
#elif defined(BOARD_NR_GPIO_PINS) // Only in STM32GENERIC (Maple)
#include "../HAL_STM32/pinsDebug_STM32GENERIC.h"
#else
- #error "M43 not supported for this board"
+ #error "M43 Pins Debugging not supported for this board."
#endif
diff --git a/Marlin/src/HAL/HAL_STM32F4/spi_pins.h b/Marlin/src/HAL/HAL_STM32_F4_F7/spi_pins.h
similarity index 100%
rename from Marlin/src/HAL/HAL_STM32F4/spi_pins.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/spi_pins.h
diff --git a/Marlin/src/HAL/HAL_STM32F4/watchdog_STM32F4.cpp b/Marlin/src/HAL/HAL_STM32_F4_F7/watchdog_STM32_F4_F7.cpp
similarity index 88%
rename from Marlin/src/HAL/HAL_STM32F4/watchdog_STM32F4.cpp
rename to Marlin/src/HAL/HAL_STM32_F4_F7/watchdog_STM32_F4_F7.cpp
index 51b3a8d62d..efb72a8ba7 100644
--- a/Marlin/src/HAL/HAL_STM32F4/watchdog_STM32F4.cpp
+++ b/Marlin/src/HAL/HAL_STM32_F4_F7/watchdog_STM32_F4_F7.cpp
@@ -20,13 +20,13 @@
*
*/
-#if defined(STM32GENERIC) && defined(STM32F4)
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
#include "../../inc/MarlinConfig.h"
#if ENABLED(USE_WATCHDOG)
- #include "watchdog_STM32F4.h"
+ #include "watchdog_STM32_F4_F7.h"
IWDG_HandleTypeDef hiwdg;
@@ -37,6 +37,11 @@
if (HAL_IWDG_Init(&hiwdg) != HAL_OK) {
//Error_Handler();
}
+ else {
+ #if PIN_EXISTS(LED) && !ENABLED(PINS_DEBUGGING)
+ TOGGLE(LED_PIN); // heartbeat indicator
+ #endif
+ }
}
void watchdog_reset() {
@@ -45,13 +50,7 @@
/* Refresh Error */
//Error_Handler();
}
- else {
- #if PIN_EXISTS(LED)
- TOGGLE(LED_PIN); // heartbeat indicator
- #endif
- }
}
#endif // USE_WATCHDOG
-
-#endif // STM32GENERIC && STM32F4
+#endif // STM32GENERIC && (STM32F4 || STM32F7)
diff --git a/Marlin/src/HAL/HAL_STM32F4/watchdog_STM32F4.h b/Marlin/src/HAL/HAL_STM32_F4_F7/watchdog_STM32_F4_F7.h
similarity index 100%
rename from Marlin/src/HAL/HAL_STM32F4/watchdog_STM32F4.h
rename to Marlin/src/HAL/HAL_STM32_F4_F7/watchdog_STM32_F4_F7.h
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
index 8c9836d130..35af9febaf 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/HAL_timers_Teensy.h
@@ -28,15 +28,11 @@
#pragma once
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
@@ -48,8 +44,8 @@ typedef uint32_t hal_timer_t;
#define FTM0_TIMER_PRESCALE_BITS 0b011
#define FTM1_TIMER_PRESCALE_BITS 0b010
-#define FTM0_TIMER_RATE (F_BUS / FTM0_TIMER_PRESCALE) // 60MHz / 8 = 7500kHz
-#define FTM1_TIMER_RATE (F_BUS / FTM1_TIMER_PRESCALE) // 60MHz / 4 = 15MHz
+#define FTM0_TIMER_RATE (F_BUS / (FTM0_TIMER_PRESCALE)) // 60MHz / 8 = 7500kHz
+#define FTM1_TIMER_RATE (F_BUS / (FTM1_TIMER_PRESCALE)) // 60MHz / 4 = 15MHz
#define HAL_TIMER_RATE (FTM0_TIMER_RATE)
diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp b/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp
index d746dc9730..8622c947fc 100644
--- a/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp
+++ b/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp
@@ -1,10 +1,28 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * 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 .
+ *
+ */
#ifdef __MK20DX256__
#include "../../inc/MarlinConfig.h"
#if ENABLED(EEPROM_SETTINGS)
-#include "../persistent_store_api.h"
+#include "../shared/persistent_store_api.h"
namespace HAL {
namespace PersistentStore {
diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h b/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
index f3a26eb5d8..4a8de159b0 100644
--- a/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
+++ b/Marlin/src/HAL/HAL_TEENSY35_36/HAL.h
@@ -27,10 +27,6 @@
#define CPU_32_BIT
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
@@ -47,9 +43,9 @@
#define ST7920_DELAY_2 DELAY_NS(750)
#define ST7920_DELAY_3 DELAY_NS(750)
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define IS_32BIT_TEENSY (defined(__MK64FX512__) || defined(__MK66FX1M0__))
#define IS_TEENSY35 defined(__MK64FX512__)
diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_timers_Teensy.h b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_timers_Teensy.h
index 8263691947..741f27c0ba 100644
--- a/Marlin/src/HAL/HAL_TEENSY35_36/HAL_timers_Teensy.h
+++ b/Marlin/src/HAL/HAL_TEENSY35_36/HAL_timers_Teensy.h
@@ -25,15 +25,11 @@
* Teensy3.6 (__MK66FX1M0__)
*/
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
#include
-// --------------------------------------------------------------------------
+// ------------------------
// Defines
-// --------------------------------------------------------------------------
+// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
diff --git a/Marlin/src/HAL/shared/I2cEeprom.cpp b/Marlin/src/HAL/shared/I2cEeprom.cpp
index cc98ac183d..f5e470541d 100644
--- a/Marlin/src/HAL/shared/I2cEeprom.cpp
+++ b/Marlin/src/HAL/shared/I2cEeprom.cpp
@@ -29,51 +29,19 @@
#if ENABLED(I2C_EEPROM)
-// --------------------------------------------------------------------------
-// Includes
-// --------------------------------------------------------------------------
-
-#include HAL_PATH(.., HAL.h)
+#include "../HAL.h"
#include
-// --------------------------------------------------------------------------
-// Externals
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Local defines
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Types
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
+// ------------------------
// Private Variables
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Function prototypes
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Private functions
-// --------------------------------------------------------------------------
-
-// --------------------------------------------------------------------------
-// Public functions
-// --------------------------------------------------------------------------
+// ------------------------
static uint8_t eeprom_device_address = 0x50;
+// ------------------------
+// Public functions
+// ------------------------
+
static void eeprom_init(void) {
static bool eeprom_initialized = false;
if (!eeprom_initialized) {
@@ -127,7 +95,6 @@ void eeprom_update_block(const void *pos, void* eeprom_address, size_t n) {
}
}
-
uint8_t eeprom_read_byte(uint8_t *pos) {
unsigned eeprom_address = (unsigned)pos;
@@ -141,7 +108,7 @@ uint8_t eeprom_read_byte(uint8_t *pos) {
return Wire.available() ? Wire.read() : 0xFF;
}
-// maybe let's not read more than 30 or 32 bytes at a time!
+// Don't read more than 30..32 bytes at a time!
void eeprom_read_block(void* pos, const void* eeprom_address, size_t n) {
eeprom_init();
diff --git a/Marlin/src/HAL/shared/Marduino.h b/Marlin/src/HAL/shared/Marduino.h
index d9440325f2..0b33641ba4 100644
--- a/Marlin/src/HAL/shared/Marduino.h
+++ b/Marlin/src/HAL/shared/Marduino.h
@@ -29,6 +29,7 @@
#undef M_PI // Redefined by all
#undef _BV // Redefined by some
#undef sq // Redefined by teensy3/wiring.h
+#undef vsnprintf_P // Defined by avr/pgmspace.h in some platforms
#include // NOTE: If included earlier then this line is a NOOP
@@ -41,6 +42,10 @@
#undef sq
#define sq(x) ((x)*(x))
+#ifndef vsnprintf_P
+ #define vsnprintf_P vsnprintf
+#endif
+
#ifndef SBI
#define SBI(A,B) (A |= (1 << (B)))
#endif
diff --git a/Marlin/src/HAL/shared/SpiEeprom.cpp b/Marlin/src/HAL/shared/SpiEeprom.cpp
index cbdb4d2985..35e7d9b0a9 100644
--- a/Marlin/src/HAL/shared/SpiEeprom.cpp
+++ b/Marlin/src/HAL/shared/SpiEeprom.cpp
@@ -29,7 +29,7 @@
#if ENABLED(SPI_EEPROM)
-#include HAL_PATH(.., HAL.h)
+#include "../HAL.h"
#define CMD_WREN 6 // WREN
#define CMD_READ 2 // WRITE
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 12bac48b6c..d94fa51ac4 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -860,7 +860,7 @@ void setup() {
setup_killpin();
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
tmc_serial_begin();
#endif
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index 1fe83040d8..6ab232cde9 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -94,86 +94,92 @@
#define BOARD_TRONXY_V3_1_0 1140 // Tronxy TRONXY-V3-1.0
#define BOARD_Z_BOLT_X_SERIES 1141 // Z-Bolt X Series
+//
+// RAMBo and derivatives
+//
+
+#define BOARD_RAMBO 1200 // Rambo
+#define BOARD_MINIRAMBO 1201 // Mini-Rambo
+#define BOARD_MINIRAMBO_10A 1202 // Mini-Rambo 1.0a
+#define BOARD_EINSY_RAMBO 1203 // Einsy Rambo
+#define BOARD_EINSY_RETRO 1204 // Einsy Retro
+#define BOARD_SCOOVO_X9H 1205 // abee Scoovo X9H
+
//
// Other ATmega1280, ATmega2560
//
-#define BOARD_CNCONTROLS_11 1200 // Cartesio CN Controls V11
-#define BOARD_CNCONTROLS_12 1201 // Cartesio CN Controls V12
-#define BOARD_CHEAPTRONIC 1202 // Cheaptronic v1.0
-#define BOARD_CHEAPTRONIC_V2 1203 // Cheaptronic v2.0
-#define BOARD_MIGHTYBOARD_REVE 1204 // Makerbot Mightyboard Revision E
-#define BOARD_MEGATRONICS 1205 // Megatronics
-#define BOARD_MEGATRONICS_2 1206 // Megatronics v2.0
-#define BOARD_MEGATRONICS_3 1207 // Megatronics v3.0
-#define BOARD_MEGATRONICS_31 1208 // Megatronics v3.1
-#define BOARD_MEGATRONICS_32 1209 // Megatronics v3.2
-#define BOARD_RAMBO 1210 // Rambo
-#define BOARD_MINIRAMBO 1211 // Mini-Rambo
-#define BOARD_MINIRAMBO_10A 1212 // Mini-Rambo 1.0a
-#define BOARD_EINSY_RAMBO 1213 // Einsy Rambo
-#define BOARD_EINSY_RETRO 1214 // Einsy Retro
-#define BOARD_ELEFU_3 1215 // Elefu Ra Board (v3)
-#define BOARD_LEAPFROG 1216 // Leapfrog
-#define BOARD_MEGACONTROLLER 1217 // Mega controller
-#define BOARD_SCOOVO_X9H 1218 // abee Scoovo X9H
-#define BOARD_GT2560_REV_A 1219 // Geeetech GT2560 Rev. A
-#define BOARD_GT2560_REV_A_PLUS 1220 // Geeetech GT2560 Rev. A+ (with auto level probe)
-#define BOARD_GT2560_V3 1221 // Geeetech GT2560 Rev B for A10(M/D)
-#define BOARD_GT2560_V3_MC2 1222 // Geeetech GT2560 Rev B for Mecreator2
-#define BOARD_GT2560_V3_A20 1223 // Geeetech GT2560 Rev B for A20(M/D)
-#define BOARD_EINSTART_S 1224 // Einstart retrofit
+#define BOARD_CNCONTROLS_11 1300 // Cartesio CN Controls V11
+#define BOARD_CNCONTROLS_12 1301 // Cartesio CN Controls V12
+#define BOARD_CHEAPTRONIC 1302 // Cheaptronic v1.0
+#define BOARD_CHEAPTRONIC_V2 1303 // Cheaptronic v2.0
+#define BOARD_MIGHTYBOARD_REVE 1304 // Makerbot Mightyboard Revision E
+#define BOARD_MEGATRONICS 1305 // Megatronics
+#define BOARD_MEGATRONICS_2 1306 // Megatronics v2.0
+#define BOARD_MEGATRONICS_3 1307 // Megatronics v3.0
+#define BOARD_MEGATRONICS_31 1308 // Megatronics v3.1
+#define BOARD_MEGATRONICS_32 1309 // Megatronics v3.2
+#define BOARD_ELEFU_3 1310 // Elefu Ra Board (v3)
+#define BOARD_LEAPFROG 1311 // Leapfrog
+#define BOARD_MEGACONTROLLER 1312 // Mega controller
+#define BOARD_GT2560_REV_A 1313 // Geeetech GT2560 Rev. A
+#define BOARD_GT2560_REV_A_PLUS 1314 // Geeetech GT2560 Rev. A+ (with auto level probe)
+#define BOARD_GT2560_V3 1315 // Geeetech GT2560 Rev B for A10(M/D)
+#define BOARD_GT2560_V3_MC2 1316 // Geeetech GT2560 Rev B for Mecreator2
+#define BOARD_GT2560_V3_A20 1317 // Geeetech GT2560 Rev B for A20(M/D)
+#define BOARD_EINSTART_S 1318 // Einstart retrofit
+#define BOARD_WANHAO_ONEPLUS 1319 // Wanhao 0ne+ i3 Mini
//
// ATmega1281, ATmega2561
//
-#define BOARD_MINITRONICS 1300 // Minitronics v1.0/1.1
-#define BOARD_SILVER_GATE 1301 // Silvergate v1.0
+#define BOARD_MINITRONICS 1400 // Minitronics v1.0/1.1
+#define BOARD_SILVER_GATE 1401 // Silvergate v1.0
//
// Sanguinololu and Derivatives - ATmega644P, ATmega1284P
//
-#define BOARD_SANGUINOLOLU_11 1400 // Sanguinololu < 1.2
-#define BOARD_SANGUINOLOLU_12 1401 // Sanguinololu 1.2 and above
-#define BOARD_MELZI 1402 // Melzi
-#define BOARD_MELZI_MAKR3D 1403 // Melzi with ATmega1284 (MaKr3d version)
-#define BOARD_MELZI_CREALITY 1404 // Melzi Creality3D board (for CR-10 etc)
-#define BOARD_MELZI_MALYAN 1405 // Melzi Malyan M150 board
-#define BOARD_MELZI_TRONXY 1406 // Tronxy X5S
-#define BOARD_STB_11 1407 // STB V1.1
-#define BOARD_AZTEEG_X1 1408 // Azteeg X1
-#define BOARD_ANET_10 1409 // Anet 1.0 (Melzi clone)
+#define BOARD_SANGUINOLOLU_11 1500 // Sanguinololu < 1.2
+#define BOARD_SANGUINOLOLU_12 1501 // Sanguinololu 1.2 and above
+#define BOARD_MELZI 1502 // Melzi
+#define BOARD_MELZI_MAKR3D 1503 // Melzi with ATmega1284 (MaKr3d version)
+#define BOARD_MELZI_CREALITY 1504 // Melzi Creality3D board (for CR-10 etc)
+#define BOARD_MELZI_MALYAN 1505 // Melzi Malyan M150 board
+#define BOARD_MELZI_TRONXY 1506 // Tronxy X5S
+#define BOARD_STB_11 1507 // STB V1.1
+#define BOARD_AZTEEG_X1 1508 // Azteeg X1
+#define BOARD_ANET_10 1509 // Anet 1.0 (Melzi clone)
//
// Other ATmega644P, ATmega644, ATmega1284P
//
-#define BOARD_GEN3_MONOLITHIC 1500 // Gen3 Monolithic Electronics
-#define BOARD_GEN3_PLUS 1501 // Gen3+
-#define BOARD_GEN6 1502 // Gen6
-#define BOARD_GEN6_DELUXE 1503 // Gen6 deluxe
-#define BOARD_GEN7_CUSTOM 1504 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
-#define BOARD_GEN7_12 1505 // Gen7 v1.1, v1.2
-#define BOARD_GEN7_13 1506 // Gen7 v1.3
-#define BOARD_GEN7_14 1507 // Gen7 v1.4
-#define BOARD_OMCA_A 1508 // Alpha OMCA board
-#define BOARD_OMCA 1509 // Final OMCA board
-#define BOARD_SETHI 1510 // Sethi 3D_1
+#define BOARD_GEN3_MONOLITHIC 1600 // Gen3 Monolithic Electronics
+#define BOARD_GEN3_PLUS 1601 // Gen3+
+#define BOARD_GEN6 1602 // Gen6
+#define BOARD_GEN6_DELUXE 1603 // Gen6 deluxe
+#define BOARD_GEN7_CUSTOM 1604 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
+#define BOARD_GEN7_12 1605 // Gen7 v1.1, v1.2
+#define BOARD_GEN7_13 1606 // Gen7 v1.3
+#define BOARD_GEN7_14 1607 // Gen7 v1.4
+#define BOARD_OMCA_A 1608 // Alpha OMCA board
+#define BOARD_OMCA 1609 // Final OMCA board
+#define BOARD_SETHI 1610 // Sethi 3D_1
//
// Teensyduino - AT90USB1286, AT90USB1286P
//
-#define BOARD_TEENSYLU 1600 // Teensylu
-#define BOARD_PRINTRBOARD 1601 // Printrboard (AT90USB1286)
-#define BOARD_PRINTRBOARD_REVF 1602 // Printrboard Revision F (AT90USB1286)
-#define BOARD_BRAINWAVE 1603 // Brainwave (AT90USB646)
-#define BOARD_BRAINWAVE_PRO 1604 // Brainwave Pro (AT90USB1286)
-#define BOARD_SAV_MKI 1605 // SAV Mk-I (AT90USB1286)
-#define BOARD_TEENSY2 1606 // Teensy++2.0 (AT90USB1286)
-#define BOARD_5DPRINT 1607 // 5DPrint D8 Driver Board
+#define BOARD_TEENSYLU 1700 // Teensylu
+#define BOARD_PRINTRBOARD 1701 // Printrboard (AT90USB1286)
+#define BOARD_PRINTRBOARD_REVF 1702 // Printrboard Revision F (AT90USB1286)
+#define BOARD_BRAINWAVE 1703 // Brainwave (AT90USB646)
+#define BOARD_BRAINWAVE_PRO 1704 // Brainwave Pro (AT90USB1286)
+#define BOARD_SAV_MKI 1705 // SAV Mk-I (AT90USB1286)
+#define BOARD_TEENSY2 1706 // Teensy++2.0 (AT90USB1286)
+#define BOARD_5DPRINT 1707 // 5DPrint D8 Driver Board
//
// LPC1768 ARM Cortex M3
@@ -200,6 +206,7 @@
#define BOARD_MKS_SGEN 2018 // MKS-SGen (Power outputs: Hotend0, Hotend1, Bed, Fan)
#define BOARD_MKS_SGEN_L 2019 // MKS-SGen-L (Power outputs: Hotend0, Hotend1, Bed, Fan)
#define BOARD_TH3D_EZBOARD 2020 // TH3D EZBoard v1.0
+#define BOARD_GMARSH_X6_REV1 2021 // GMARSH X6 board, revision 1 prototype
//
// SAM3X8E ARM Cortex M3
@@ -258,19 +265,24 @@
#define BOARD_FYSETC_CHEETAH 4012 // FYSETC CHEETAH
//
-// STM32 ARM Cortex-M4F
+// ARM Cortex-M4F
//
#define BOARD_TEENSY31_32 4100 // Teensy3.1 and Teensy3.2
#define BOARD_TEENSY35_36 4101 // Teensy3.5 and Teensy3.6
-#define BOARD_BEAST 4102 // STM32F4xxVxT6 Libmaple-based STM32F4 controller
-#define BOARD_STM32F4 4103 // STM32 STM32GENERIC-based STM32F4 controller
-#define BOARD_ARMED 4104 // Arm'ed STM32F4-based controller
-#define BOARD_RUMBA32 4105 // RUMBA32 STM32F4-based controller
-#define BOARD_BLACK_STM32F407VE 4106 // BLACK_STM32F407VE
-#define BOARD_BLACK_STM32F407ZE 4107 // BLACK_STM32F407ZE
-#define BOARD_STEVAL 4108 // STEVAL-3DP001V1 3D PRINTER BOARD
-#define BOARD_BIGTREE_SKR_PRO_V1_1 4109 // BigTreeTech SKR Pro v1.1 (STM32F407ZG)
+
+//
+// STM32 ARM Cortex-M4F
+//
+
+#define BOARD_BEAST 4200 // STM32F4xxVxT6 Libmaple-based STM32F4 controller
+#define BOARD_STM32F4 4201 // STM32 STM32GENERIC-based STM32F4 controller
+#define BOARD_ARMED 4202 // Arm'ed STM32F4-based controller
+#define BOARD_RUMBA32 4203 // RUMBA32 STM32F4-based controller
+#define BOARD_BLACK_STM32F407VE 4204 // BLACK_STM32F407VE
+#define BOARD_BLACK_STM32F407ZE 4205 // BLACK_STM32F407ZE
+#define BOARD_STEVAL 4206 // STEVAL-3DP001V1 3D PRINTER BOARD
+#define BOARD_BIGTREE_SKR_PRO_V1_1 4207 // BigTreeTech SKR Pro v1.1 (STM32F407ZG)
//
// ARM Cortex M7
diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h
index a6e480c141..6e89ae8532 100644
--- a/Marlin/src/core/drivers.h
+++ b/Marlin/src/core/drivers.h
@@ -84,6 +84,8 @@
|| HAS_DRIVER(TMC5130) \
|| HAS_DRIVER(TMC5160) )
+#define HAS_TMC220x (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
+
#define AXIS_IS_TMC(A) ( AXIS_DRIVER_TYPE(A,TMC2130) \
|| AXIS_DRIVER_TYPE(A,TMC2160) \
|| AXIS_DRIVER_TYPE(A,TMC2208) \
diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h
index 918b3c6d1b..a6e546a4a8 100644
--- a/Marlin/src/core/macros.h
+++ b/Marlin/src/core/macros.h
@@ -21,8 +21,6 @@
*/
#pragma once
-#include "minmax.h"
-
#define NUM_AXIS 4
#define ABCE 4
#define XYZE 4
@@ -75,10 +73,16 @@
#undef _BV
#define _BV(n) (1<<(n))
#define TEST(n,b) !!((n)&_BV(b))
-#define SBI(n,b) (n |= _BV(b))
-#define CBI(n,b) (n &= ~_BV(b))
#define SET_BIT_TO(N,B,TF) do{ if (TF) SBI(N,B); else CBI(N,B); }while(0)
+#ifndef SBI
+ #define SBI(A,B) (A |= (1 << (B)))
+#endif
+
+#ifndef CBI
+ #define CBI(A,B) (A &= ~(1 << (B)))
+#endif
+
#define _BV32(b) (1UL << (b))
#define TEST32(n,b) !!((n)&_BV32(b))
#define SBI32(n,b) (n |= _BV32(b))
@@ -269,3 +273,58 @@
#else
#define I2C_ADDRESS(A) A
#endif
+
+// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments
+#define _NUM_ARGS(_0,_24_,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) N
+#define NUM_ARGS(V...) _NUM_ARGS(0,V,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
+
+#ifdef __cplusplus
+
+ #ifndef _MINMAX_H_
+ #define _MINMAX_H_
+
+ extern "C++" {
+
+ // C++11 solution that is standards compliant. Return type is deduced automatically
+ template static inline constexpr auto _MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) {
+ return lhs < rhs ? lhs : rhs;
+ }
+ template static inline constexpr auto _MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) {
+ return lhs > rhs ? lhs : rhs;
+ }
+ template static inline constexpr const T _MIN(T V, Ts... Vs) { return _MIN(V, _MIN(Vs...)); }
+ template static inline constexpr const T _MAX(T V, Ts... Vs) { return _MAX(V, _MAX(Vs...)); }
+
+ }
+
+ #endif
+
+#else
+
+ #define MIN_2(a,b) ((a)<(b)?(a):(b))
+ #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__))
+ #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__))
+ #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__))
+ #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__))
+ #define MIN_7(a,...) MIN_2(a,MIN_6(__VA_ARGS__))
+ #define MIN_8(a,...) MIN_2(a,MIN_7(__VA_ARGS__))
+ #define MIN_9(a,...) MIN_2(a,MIN_8(__VA_ARGS__))
+ #define MIN_10(a,...) MIN_2(a,MIN_9(__VA_ARGS__))
+ #define __MIN_N(N, ...) MIN_##N(__VA_ARGS__)
+ #define _MIN_N(N, ...) __MIN_N(N,__VA_ARGS__)
+ #define _MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
+
+ #define MAX_2(a,b) ((a)>(b)?(a):(b))
+ #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__))
+ #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__))
+ #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__))
+ #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__))
+ #define MAX_7(a,...) MAX_2(a,MAX_6(__VA_ARGS__))
+ #define MAX_8(a,...) MAX_2(a,MAX_7(__VA_ARGS__))
+ #define MAX_9(a,...) MAX_2(a,MAX_8(__VA_ARGS__))
+ #define MAX_10(a,...) MAX_2(a,MAX_9(__VA_ARGS__))
+ #define __MAX_N(N, ...) MAX_##N(__VA_ARGS__)
+ #define _MAX_N(N, ...) __MAX_N(N,__VA_ARGS__)
+ #define _MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
+
+#endif
diff --git a/Marlin/src/core/minmax.h b/Marlin/src/core/minmax.h
deleted file mode 100644
index 64294711ff..0000000000
--- a/Marlin/src/core/minmax.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 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 .
- *
- */
-#pragma once
-
-// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments
-#define _NUM_ARGS(_0,_24_,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) N
-#define NUM_ARGS(V...) _NUM_ARGS(0,V,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
-
-#ifdef __cplusplus
-
- #ifndef _MINMAX_H_
- #define _MINMAX_H_
-
- extern "C++" {
-
- // C++11 solution that is standards compliant. Return type is deduced automatically
- template static inline constexpr auto _MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) {
- return lhs < rhs ? lhs : rhs;
- }
- template static inline constexpr auto _MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) {
- return lhs > rhs ? lhs : rhs;
- }
- template static inline constexpr const T _MIN(T V, Ts... Vs) { return _MIN(V, _MIN(Vs...)); }
- template static inline constexpr const T _MAX(T V, Ts... Vs) { return _MAX(V, _MAX(Vs...)); }
-
- }
-
- #endif
-
-#else
-
- #define MIN_2(a,b) ((a)<(b)?(a):(b))
- #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__))
- #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__))
- #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__))
- #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__))
- #define MIN_7(a,...) MIN_2(a,MIN_6(__VA_ARGS__))
- #define MIN_8(a,...) MIN_2(a,MIN_7(__VA_ARGS__))
- #define MIN_9(a,...) MIN_2(a,MIN_8(__VA_ARGS__))
- #define MIN_10(a,...) MIN_2(a,MIN_9(__VA_ARGS__))
- #define __MIN_N(N, ...) MIN_##N(__VA_ARGS__)
- #define _MIN_N(N, ...) __MIN_N(N,__VA_ARGS__)
- #define MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
-
- #define MAX_2(a,b) ((a)>(b)?(a):(b))
- #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__))
- #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__))
- #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__))
- #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__))
- #define MAX_7(a,...) MAX_2(a,MAX_6(__VA_ARGS__))
- #define MAX_8(a,...) MAX_2(a,MAX_7(__VA_ARGS__))
- #define MAX_9(a,...) MAX_2(a,MAX_8(__VA_ARGS__))
- #define MAX_10(a,...) MAX_2(a,MAX_9(__VA_ARGS__))
- #define __MAX_N(N, ...) MAX_##N(__VA_ARGS__)
- #define _MAX_N(N, ...) __MAX_N(N,__VA_ARGS__)
- #define MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
-
-#endif
diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h
index e466966698..fffc3d60dc 100644
--- a/Marlin/src/core/serial.h
+++ b/Marlin/src/core/serial.h
@@ -21,9 +21,12 @@
*/
#pragma once
-#include "../inc/MarlinConfigPre.h"
-#include "../core/minmax.h"
-#include HAL_PATH(../HAL, HAL.h)
+//#include
+
+//#include "../inc/MarlinConfigPre.h"
+#include "../HAL/HAL.h"
+
+// #include "../core/macros.h"
/**
* Define debug bit-masks
@@ -57,10 +60,12 @@ extern uint8_t marlin_debug_flags;
if (!serial_port_index || serial_port_index == SERIAL_BOTH) (void)MYSERIAL0.WHAT(V); \
if ( serial_port_index) (void)MYSERIAL1.WHAT(V); \
}while(0)
+ #define SERIAL_ASSERT(P) if(serial_port_index!=(P)){ debugger(); }
#else
#define _PORT_REDIRECT(n,p) NOOP
#define _PORT_RESTORE(n) NOOP
#define SERIAL_OUT(WHAT, V...) (void)MYSERIAL0.WHAT(V)
+ #define SERIAL_ASSERT(P) NOOP
#endif
#define PORT_REDIRECT(p) _PORT_REDIRECT(1,p)
diff --git a/Marlin/src/feature/bedlevel/abl/abl.cpp b/Marlin/src/feature/bedlevel/abl/abl.cpp
index 85ec693203..c70cf62203 100644
--- a/Marlin/src/feature/bedlevel/abl/abl.cpp
+++ b/Marlin/src/feature/bedlevel/abl/abl.cpp
@@ -369,10 +369,10 @@ float bilinear_z_offset(const float raw[XYZ]) {
cy1 = CELL_INDEX(Y, current_position[Y_AXIS]),
cx2 = CELL_INDEX(X, destination[X_AXIS]),
cy2 = CELL_INDEX(Y, destination[Y_AXIS]);
- cx1 = constrain(cx1, 0, ABL_BG_POINTS_X - 2);
- cy1 = constrain(cy1, 0, ABL_BG_POINTS_Y - 2);
- cx2 = constrain(cx2, 0, ABL_BG_POINTS_X - 2);
- cy2 = constrain(cy2, 0, ABL_BG_POINTS_Y - 2);
+ LIMIT(cx1, 0, ABL_BG_POINTS_X - 2);
+ LIMIT(cy1, 0, ABL_BG_POINTS_Y - 2);
+ LIMIT(cx2, 0, ABL_BG_POINTS_X - 2);
+ LIMIT(cy2, 0, ABL_BG_POINTS_Y - 2);
// Start and end in the same cell? No split needed.
if (cx1 == cx2 && cy1 == cy2) {
diff --git a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp
index d3b012da5a..4bb29d7e0b 100644
--- a/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp
+++ b/Marlin/src/feature/bedlevel/ubl/ubl_motion.cpp
@@ -443,8 +443,8 @@
int8_t cell_xi = (raw[X_AXIS] - (MESH_MIN_X)) * (1.0f / (MESH_X_DIST)),
cell_yi = (raw[Y_AXIS] - (MESH_MIN_Y)) * (1.0f / (MESH_Y_DIST));
- cell_xi = constrain(cell_xi, 0, (GRID_MAX_POINTS_X) - 1);
- cell_yi = constrain(cell_yi, 0, (GRID_MAX_POINTS_Y) - 1);
+ LIMIT(cell_xi, 0, (GRID_MAX_POINTS_X) - 1);
+ LIMIT(cell_yi, 0, (GRID_MAX_POINTS_Y) - 1);
const float x0 = mesh_index_to_xpos(cell_xi), // 64 byte table lookup avoids mul+add
y0 = mesh_index_to_ypos(cell_yi);
diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp
index c432a3cf9a..a9c55e8c10 100644
--- a/Marlin/src/feature/tmc_util.cpp
+++ b/Marlin/src/feature/tmc_util.cpp
@@ -69,7 +69,7 @@
#endif
;
#if ENABLED(TMC_DEBUG)
- #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMCX1X0 || HAS_TMC220x
uint8_t cs_actual;
#endif
#if HAS_STALLGUARD
@@ -139,7 +139,7 @@
#endif // HAS_TMCX1X0
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
#if ENABLED(TMC_DEBUG)
static uint32_t get_pwm_scale(TMC2208Stepper &st) { return st.pwm_scale_sum(); }
@@ -239,7 +239,7 @@
st.printLabel();
SERIAL_CHAR(':'); SERIAL_PRINT(pwm_scale, DEC);
#if ENABLED(TMC_DEBUG)
- #if HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMCX1X0 || HAS_TMC220x
SERIAL_CHAR('/'); SERIAL_PRINT(data.cs_actual, DEC);
#endif
#if HAS_STALLGUARD
@@ -516,7 +516,7 @@
}
#endif
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
static void _tmc_status(TMC2208Stepper &st, const TMC_debug_enum i) {
switch (i) {
case TMC_PWM_SCALE: SERIAL_PRINT(st.pwm_scale_sum(), DEC); break;
@@ -789,7 +789,7 @@
#endif
TMC_REPORT("CS actual\t", TMC_CS_ACTUAL);
TMC_REPORT("PWM scale", TMC_PWM_SCALE);
- #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2224) || HAS_DRIVER(TMC2660) || HAS_TMC220x
TMC_REPORT("vsense\t", TMC_VSENSE);
#endif
TMC_REPORT("stealthChop", TMC_STEALTHCHOP);
@@ -821,7 +821,7 @@
DRV_REPORT("s2ga\t", TMC_S2GA);
DRV_REPORT("otpw\t", TMC_DRV_OTPW);
DRV_REPORT("ot\t", TMC_OT);
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
DRV_REPORT("157C\t", TMC_T157);
DRV_REPORT("150C\t", TMC_T150);
DRV_REPORT("143C\t", TMC_T143);
@@ -845,7 +845,7 @@
}
}
#endif
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
static void tmc_get_ic_registers(TMC2208Stepper, const TMC_get_registers_enum) { SERIAL_CHAR('\t'); }
#endif
diff --git a/Marlin/src/gcode/bedlevel/G26.cpp b/Marlin/src/gcode/bedlevel/G26.cpp
index 817e5646a6..b95fe8d165 100644
--- a/Marlin/src/gcode/bedlevel/G26.cpp
+++ b/Marlin/src/gcode/bedlevel/G26.cpp
@@ -337,9 +337,9 @@ inline bool look_for_lines_to_connect() {
sx = _GET_MESH_X( i ) + (INTERSECTION_CIRCLE_RADIUS - (CROSSHAIRS_SIZE)); // right edge
ex = _GET_MESH_X(i + 1) - (INTERSECTION_CIRCLE_RADIUS - (CROSSHAIRS_SIZE)); // left edge
- sx = constrain(sx, X_MIN_POS + 1, X_MAX_POS - 1);
+ LIMIT(sx, X_MIN_POS + 1, X_MAX_POS - 1);
sy = ey = constrain(_GET_MESH_Y(j), Y_MIN_POS + 1, Y_MAX_POS - 1);
- ex = constrain(ex, X_MIN_POS + 1, X_MAX_POS - 1);
+ LIMIT(ex, X_MIN_POS + 1, X_MAX_POS - 1);
if (position_is_reachable(sx, sy) && position_is_reachable(ex, ey))
print_line_from_here_to_there(sx, sy, g26_layer_height, ex, ey, g26_layer_height);
@@ -358,8 +358,8 @@ inline bool look_for_lines_to_connect() {
ey = _GET_MESH_Y(j + 1) - (INTERSECTION_CIRCLE_RADIUS - (CROSSHAIRS_SIZE)); // bottom edge
sx = ex = constrain(_GET_MESH_X(i), X_MIN_POS + 1, X_MAX_POS - 1);
- sy = constrain(sy, Y_MIN_POS + 1, Y_MAX_POS - 1);
- ey = constrain(ey, Y_MIN_POS + 1, Y_MAX_POS - 1);
+ LIMIT(sy, Y_MIN_POS + 1, Y_MAX_POS - 1);
+ LIMIT(ey, Y_MIN_POS + 1, Y_MAX_POS - 1);
if (position_is_reachable(sx, sy) && position_is_reachable(ex, ey))
print_line_from_here_to_there(sx, sy, g26_layer_height, ex, ey, g26_layer_height);
@@ -832,10 +832,10 @@ void GcodeSuite::G26() {
// Check to make sure this segment is entirely on the bed, skip if not.
if (!position_is_reachable(rx, ry) || !position_is_reachable(xe, ye)) continue;
#else // not, we need to skip
- rx = constrain(rx, X_MIN_POS + 1, X_MAX_POS - 1); // This keeps us from bumping the endstops
- ry = constrain(ry, Y_MIN_POS + 1, Y_MAX_POS - 1);
- xe = constrain(xe, X_MIN_POS + 1, X_MAX_POS - 1);
- ye = constrain(ye, Y_MIN_POS + 1, Y_MAX_POS - 1);
+ LIMIT(rx, X_MIN_POS + 1, X_MAX_POS - 1); // This keeps us from bumping the endstops
+ LIMIT(ry, Y_MIN_POS + 1, Y_MAX_POS - 1);
+ LIMIT(xe, X_MIN_POS + 1, X_MAX_POS - 1);
+ LIMIT(ye, Y_MIN_POS + 1, Y_MAX_POS - 1);
#endif
print_line_from_here_to_there(rx, ry, g26_layer_height, xe, ye, g26_layer_height);
diff --git a/Marlin/src/gcode/bedlevel/abl/G29.cpp b/Marlin/src/gcode/bedlevel/abl/G29.cpp
index 2a4b4f85bb..64ae54ef21 100644
--- a/Marlin/src/gcode/bedlevel/abl/G29.cpp
+++ b/Marlin/src/gcode/bedlevel/abl/G29.cpp
@@ -318,8 +318,8 @@ G29_TYPE GcodeSuite::G29() {
// Get nearest i / j from rx / ry
i = (rx - bilinear_start[X_AXIS] + 0.5 * xGridSpacing) / xGridSpacing;
j = (ry - bilinear_start[Y_AXIS] + 0.5 * yGridSpacing) / yGridSpacing;
- i = constrain(i, 0, GRID_MAX_POINTS_X - 1);
- j = constrain(j, 0, GRID_MAX_POINTS_Y - 1);
+ LIMIT(i, 0, GRID_MAX_POINTS_X - 1);
+ LIMIT(j, 0, GRID_MAX_POINTS_Y - 1);
}
if (WITHIN(i, 0, GRID_MAX_POINTS_X - 1) && WITHIN(j, 0, GRID_MAX_POINTS_Y)) {
set_bed_leveling_enabled(false);
diff --git a/Marlin/src/gcode/calibrate/M48.cpp b/Marlin/src/gcode/calibrate/M48.cpp
index 9f0fc714d6..ca54ae8f9c 100644
--- a/Marlin/src/gcode/calibrate/M48.cpp
+++ b/Marlin/src/gcode/calibrate/M48.cpp
@@ -163,8 +163,8 @@ void GcodeSuite::M48() {
Y_current = Y_probe_location - (Y_PROBE_OFFSET_FROM_EXTRUDER) + sin(RADIANS(angle)) * radius;
#if DISABLED(DELTA)
- X_current = constrain(X_current, X_MIN_POS, X_MAX_POS);
- Y_current = constrain(Y_current, Y_MIN_POS, Y_MAX_POS);
+ LIMIT(X_current, X_MIN_POS, X_MAX_POS);
+ LIMIT(Y_current, Y_MIN_POS, Y_MAX_POS);
#else
// If we have gone out too far, we can do a simple fix and scale the numbers
// back in closer to the origin.
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index b55c658024..f43ea40d5f 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -229,17 +229,14 @@
// Einstart OLED has Cardinal nav via pins defined in pins_EINSTART-S.h
#if ENABLED(U8GLIB_SH1106_EINSTART)
- #define ULTRA_LCD
#define DOGLCD
#define ULTIPANEL
- #define NEWPANEL
#endif
/**
* FSMC/SPI TFT PANELS
*/
#if ENABLED(MKS_ROBIN_TFT)
- #define ULTRA_LCD
#define DOGLCD
#define ULTIPANEL
#endif
@@ -330,7 +327,7 @@
#endif
#if ENABLED(ULTIPANEL)
- #define NEWPANEL // Disable this if you actually have no click-encoder panel
+ #define NEWPANEL // Disable if there's actually no click-encoder panel
#define ULTRA_LCD
#endif
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 8d6da94e8e..afc22d260a 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -909,7 +909,7 @@
#define HAS_TMCX1X0 (HAS_DRIVER(TMC2130) || HAS_DRIVER(TMC2160) || HAS_DRIVER(TMC5130) || HAS_DRIVER(TMC5160))
#define TMC_HAS_SPI (HAS_TMCX1X0 || HAS_DRIVER(TMC2660))
#define HAS_STALLGUARD (HAS_TMCX1X0 || HAS_DRIVER(TMC2209) || HAS_DRIVER(TMC2660))
- #define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
+ #define HAS_STEALTHCHOP (HAS_TMCX1X0 || HAS_TMC220x)
#define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
#define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
@@ -1660,8 +1660,9 @@
#endif
// Force SDCARD_SORT_ALPHA to be enabled for Graphical LCD on LPC1768
+// on boards where SD card and LCD display share the same SPI bus
// because of a bug in the shared SPI implementation. (See #8122)
-#if defined(TARGET_LPC1768) && ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
+#if defined(TARGET_LPC1768) && ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && (SCK_PIN == LCD_PINS_D4)
#define SDCARD_SORT_ALPHA // Keeps one directory level in RAM. Changing
// directory levels still glitches the screen,
// but the following LCD update cleans it up.
diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h
index 94aa1939ba..8e8bf9682a 100644
--- a/Marlin/src/inc/MarlinConfig.h
+++ b/Marlin/src/inc/MarlinConfig.h
@@ -27,16 +27,12 @@
#include "MarlinConfigPre.h"
-#include HAL_PATH(../HAL, HAL.h)
+#include "../HAL/HAL.h"
#include "../pins/pins.h"
#include HAL_PATH(../HAL, spi_pins.h)
-#if defined(__AVR__) && !defined(USBCON)
- #define HardwareSerial_h // trick to disable the standard HWserial
-#endif
-
#include "Conditionals_post.h"
#include "SanityCheck.h"
@@ -47,4 +43,3 @@
#include "../core/language.h"
#include "../core/utility.h"
#include "../core/serial.h"
-#include "../core/minmax.h"
diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h
index ef998c654a..fa3b93c294 100644
--- a/Marlin/src/inc/MarlinConfigPre.h
+++ b/Marlin/src/inc/MarlinConfigPre.h
@@ -27,7 +27,6 @@
// Prefix header to acquire configurations
//
-#include "../HAL/platforms.h"
#include "../core/boards.h"
#include "../core/macros.h"
#include "../core/millis_t.h"
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index f65c1e9ad7..0c3b853cd0 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -2015,7 +2015,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/**
* TMC2208/2209 software UART and ENDSTOP_INTERRUPTS both use pin change interrupts (PCI)
*/
-#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
+#if HAS_TMC220x && !defined(TARGET_LPC1768) && ENABLED(ENDSTOP_INTERRUPTS_FEATURE) && !( \
defined(X_HARDWARE_SERIAL ) \
|| defined(X2_HARDWARE_SERIAL) \
|| defined(Y_HARDWARE_SERIAL ) \
@@ -2033,9 +2033,9 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#endif
/**
- * TMC2208/2209 software UART is only supported on AVR and LPC
+ * TMC2208/2209 software UART is only supported on AVR, LPC, STM32F1 and STM32F4
*/
-#if (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)) && !defined(__AVR__) && !defined(TARGET_LPC1768) && !( \
+#if HAS_TMC220x && !defined(__AVR__) && !defined(TARGET_LPC1768) && !defined(TARGET_STM32F1) && !defined(TARGET_STM32F4) && !( \
defined(X_HARDWARE_SERIAL ) \
|| defined(X2_HARDWARE_SERIAL) \
|| defined(Y_HARDWARE_SERIAL ) \
@@ -2048,7 +2048,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|| defined(E3_HARDWARE_SERIAL) \
|| defined(E4_HARDWARE_SERIAL) \
|| defined(E5_HARDWARE_SERIAL) )
- #error "TMC2208 Software Serial is supported only on AVR and LPC1768 platforms."
+ #error "TMC2208 Software Serial is supported only on AVR, LPC1768, STM32F1 and STM32F4 platforms."
#endif
#if ENABLED(SENSORLESS_HOMING)
diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
index 0e259f9439..f04d2e89a5 100644
--- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -56,14 +56,6 @@
#include "../../feature/mixing.h"
#endif
-FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, const uint8_t ty) {
- const char *str = i16tostr3(temp);
- const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
- lcd_moveto(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty);
- lcd_put_u8str(&str[3-len]);
- lcd_put_wchar(LCD_STR_DEGREE[0]);
-}
-
#define X_LABEL_POS 3
#define X_VALUE_POS 11
#define XYZ_SPACING 37
@@ -105,6 +97,14 @@ FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, cons
#define SHOW_ON_STATE false
#endif
+FORCE_INLINE void _draw_centered_temp(const int16_t temp, const uint8_t tx, const uint8_t ty) {
+ const char *str = i16tostr3(temp);
+ const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
+ lcd_moveto(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty);
+ lcd_put_u8str(&str[3-len]);
+ lcd_put_wchar(LCD_STR_DEGREE[0]);
+}
+
FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const bool blink) {
#if !HEATER_IDLE_HANDLER
UNUSED(blink);
@@ -133,27 +133,6 @@ FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const bool blin
target = IFBED(thermalManager.degTargetBed(), thermalManager.degTargetHotend(heater));
#endif
- #if HAS_HEATED_CHAMBER
- FORCE_INLINE void _draw_chamber_status(const bool blink) {
- const float temp = thermalManager.degChamber(),
- target = thermalManager.degTargetChamber();
- #if !HEATER_IDLE_HANDLER
- UNUSED(blink);
- #endif
- if (PAGE_UNDER(7)) {
- #if HEATER_IDLE_HANDLER
- const bool is_idle = false, // thermalManager.chamber_idle.timed_out,
- dodraw = (blink || !is_idle);
- #else
- constexpr bool dodraw = true;
- #endif
- if (dodraw) _draw_centered_temp(target + 0.5, STATUS_CHAMBER_TEXT_X, 7);
- }
- if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
- _draw_centered_temp(temp + 0.5f, STATUS_CHAMBER_TEXT_X, 28);
- }
- #endif
-
#if DISABLED(STATUS_HOTEND_ANIM)
#define STATIC_HOTEND true
#define HOTEND_DOT isHeat
@@ -255,6 +234,29 @@ FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const bool blin
}
+#if HAS_HEATED_CHAMBER
+
+ FORCE_INLINE void _draw_chamber_status(const bool blink) {
+ const float temp = thermalManager.degChamber(),
+ target = thermalManager.degTargetChamber();
+ #if !HEATER_IDLE_HANDLER
+ UNUSED(blink);
+ #endif
+ if (PAGE_UNDER(7)) {
+ #if HEATER_IDLE_HANDLER
+ const bool is_idle = false, // thermalManager.chamber_idle.timed_out,
+ dodraw = (blink || !is_idle);
+ #else
+ constexpr bool dodraw = true;
+ #endif
+ if (dodraw) _draw_centered_temp(target + 0.5, STATUS_CHAMBER_TEXT_X, 7);
+ }
+ if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
+ _draw_centered_temp(temp + 0.5f, STATUS_CHAMBER_TEXT_X, 28);
+ }
+
+#endif
+
//
// Before homing, blink '123' <-> '???'.
// Homed but unknown... '123' <-> ' '.
@@ -358,7 +360,7 @@ void MarlinUI::draw_status_screen() {
#endif
#if DO_DRAW_CHAMBER
- #if ANIM_HAMBER
+ #if ANIM_CHAMBER
#define CHAMBER_BITMAP(S) ((S) ? status_chamber_on_bmp : status_chamber_bmp)
#else
#define CHAMBER_BITMAP(S) status_chamber_bmp
diff --git a/Marlin/src/lcd/extui_malyan_lcd.cpp b/Marlin/src/lcd/extui_malyan_lcd.cpp
index e9e7dfdd59..6b83827382 100644
--- a/Marlin/src/lcd/extui_malyan_lcd.cpp
+++ b/Marlin/src/lcd/extui_malyan_lcd.cpp
@@ -115,9 +115,8 @@ void process_lcd_c_command(const char* command) {
switch (command[0]) {
case 'C': // Cope with both V1 early rev and later LCDs.
case 'S': {
- int raw_feedrate = atoi(command + 1);
- feedrate_percentage = raw_feedrate * 10;
- feedrate_percentage = constrain(feedrate_percentage, 10, 999);
+ feedrate_percentage = atoi(command + 1) * 10;
+ LIMIT(feedrate_percentage, 10, 999);
} break;
case 'T': {
thermalManager.setTargetHotend(atoi(command + 1), 0);
diff --git a/Marlin/src/lcd/menu/game/brickout.cpp b/Marlin/src/lcd/menu/game/brickout.cpp
index ad23031360..1cb19a5cd5 100644
--- a/Marlin/src/lcd/menu/game/brickout.cpp
+++ b/Marlin/src/lcd/menu/game/brickout.cpp
@@ -67,8 +67,7 @@ void reset_ball() {
void BrickoutGame::game_screen() {
if (game_frame()) { // Run logic twice for finer resolution
// Update Paddle Position
- paddle_x = (int8_t)ui.encoderPosition;
- paddle_x = constrain(paddle_x, 0, (LCD_PIXEL_WIDTH - (PADDLE_W)) / (PADDLE_VEL));
+ paddle_x = constrain(int8_t(ui.encoderPosition), 0, (LCD_PIXEL_WIDTH - (PADDLE_W)) / (PADDLE_VEL));
ui.encoderPosition = paddle_x;
paddle_x *= (PADDLE_VEL);
diff --git a/Marlin/src/lcd/menu/game/invaders.cpp b/Marlin/src/lcd/menu/game/invaders.cpp
index 55a1e4a849..b54566c3f7 100644
--- a/Marlin/src/lcd/menu/game/invaders.cpp
+++ b/Marlin/src/lcd/menu/game/invaders.cpp
@@ -263,8 +263,7 @@ void InvadersGame::game_screen() {
if (ui.first_page) {
// Update Cannon Position
- int16_t ep = int16_t(ui.encoderPosition);
- ep = constrain(ep, 0, (LCD_PIXEL_WIDTH - (CANNON_W)) / (CANNON_VEL));
+ int16_t ep = constrain(int16_t(ui.encoderPosition), 0, (LCD_PIXEL_WIDTH - (CANNON_W)) / (CANNON_VEL));
ui.encoderPosition = ep;
ep *= (CANNON_VEL);
diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp
index 9ede8da301..3274c904c3 100644
--- a/Marlin/src/lcd/menu/menu.cpp
+++ b/Marlin/src/lcd/menu/menu.cpp
@@ -448,7 +448,7 @@ bool ui_selection; // = false
void set_ui_selection(const bool sel) { ui_selection = sel; }
void do_select_screen(PGM_P const yes, PGM_P const no, selectFunc_t yesFunc, selectFunc_t noFunc, PGM_P const pref, const char * const string/*=nullptr*/, PGM_P const suff/*=nullptr*/) {
if (ui.encoderPosition) {
- ui_selection = int16_t(ui.encoderPosition) > 0;
+ ui_selection = (ENCODERBASE) > 0 == int16_t(ui.encoderPosition) > 0;
ui.encoderPosition = 0;
}
const bool got_click = ui.use_click();
diff --git a/Marlin/src/lcd/menu/menu_configuration.cpp b/Marlin/src/lcd/menu/menu_configuration.cpp
index c1395e22fc..f01f2fd986 100644
--- a/Marlin/src/lcd/menu/menu_configuration.cpp
+++ b/Marlin/src/lcd/menu/menu_configuration.cpp
@@ -70,7 +70,7 @@ static void lcd_factory_settings() {
return;
}
bar_percent += (int8_t)ui.encoderPosition;
- bar_percent = constrain(bar_percent, 0, 100);
+ LIMIT(bar_percent, 0, 100);
ui.encoderPosition = 0;
draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
lcd_moveto((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2);
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index d652d90abf..2fb2b209e9 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -548,7 +548,7 @@ void MarlinUI::status_screen() {
else if ((old_frm < 100 && new_frm > 100) || (old_frm > 100 && new_frm < 100))
new_frm = 100;
- new_frm = constrain(new_frm, 10, 999);
+ LIMIT(new_frm, 10, 999);
if (old_frm != new_frm) {
feedrate_percentage = new_frm;
diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp
index 561d2b6469..a755cafca4 100644
--- a/Marlin/src/module/planner.cpp
+++ b/Marlin/src/module/planner.cpp
@@ -1157,7 +1157,7 @@ void Planner::recalculate() {
}
float t = autotemp_min + high * autotemp_factor;
- t = constrain(t, autotemp_min, autotemp_max);
+ LIMIT(t, autotemp_min, autotemp_max);
if (t < oldt) t = t * (1 - float(AUTOTEMP_OLDWEIGHT)) + oldt * float(AUTOTEMP_OLDWEIGHT);
oldt = t;
thermalManager.setTargetHotend(t, 0);
diff --git a/Marlin/src/module/stepper_indirection.cpp b/Marlin/src/module/stepper_indirection.cpp
index 362ed01ba9..786cb1db8f 100644
--- a/Marlin/src/module/stepper_indirection.cpp
+++ b/Marlin/src/module/stepper_indirection.cpp
@@ -45,8 +45,8 @@
#if HAS_DRIVER(TMC26X)
#include
- #ifdef STM32F7
- #include "../HAL/HAL_STM32F7/TMC2660.h"
+ #if defined(STM32GENERIC) && defined(STM32F7)
+ #include "../HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.h"
#else
#include
#endif
@@ -309,7 +309,7 @@
//
// TMC2208/2209 Driver objects and inits
//
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
#if AXIS_HAS_UART(X)
#ifdef X_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, X, X);
diff --git a/Marlin/src/module/stepper_indirection.h b/Marlin/src/module/stepper_indirection.h
index 0e9c188adc..b0688a9a08 100644
--- a/Marlin/src/module/stepper_indirection.h
+++ b/Marlin/src/module/stepper_indirection.h
@@ -35,8 +35,8 @@
// TMC26X drivers have STEP/DIR on normal pins, but ENABLE via SPI
#if HAS_DRIVER(TMC26X)
#include
- #ifdef STM32F7
- #include "../HAL/HAL_STM32F7/TMC2660.h"
+ #if defined(STM32GENERIC) && defined(STM32F7)
+ #include "../HAL/HAL_STM32_F4_F7/STM32F7/TMC2660.h"
#else
#include
#endif
@@ -69,7 +69,7 @@
static constexpr chopper_timing_t chopper_timing = CHOPPER_TIMING;
- #if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+ #if HAS_TMC220x
void tmc_serial_begin();
#endif
#endif
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index f98f76c8d8..b6d35b9534 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -460,7 +460,7 @@ temp_range_t Temperature::temp_range[HOTENDS] = ARRAY_BY_HOTENDS(sensor_heater_0
if (cycles > 0) {
const long max_pow = GHV(MAX_BED_POWER, PID_MAX);
bias += (d * (t_high - t_low)) / (t_low + t_high);
- bias = constrain(bias, 20, max_pow - 20);
+ LIMIT(bias, 20, max_pow - 20);
d = (bias > max_pow >> 1) ? max_pow - 1 - bias : bias;
SERIAL_ECHOPAIR(MSG_BIAS, bias, MSG_D, d, MSG_T_MIN, min, MSG_T_MAX, max);
@@ -746,9 +746,28 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
//
// Temperature Error Handlers
//
+
+inline void loud_kill(PGM_P const lcd_msg) {
+ Running = false;
+ #if HAS_BUZZER && PIN_EXISTS(BEEPER)
+ for (uint8_t i = 20; i--;) {
+ WRITE(BEEPER_PIN, HIGH); delay(25);
+ WRITE(BEEPER_PIN, LOW); delay(80);
+ }
+ WRITE(BEEPER_PIN, HIGH);
+ #endif
+ kill(lcd_msg);
+}
+
void Temperature::_temp_error(const heater_ind_t heater, PGM_P const serial_msg, PGM_P const lcd_msg) {
- static bool killed = false;
- if (IsRunning()) {
+
+ static uint8_t killed = 0;
+
+ if (IsRunning()
+ #if BOGUS_TEMPERATURE_GRACE_PERIOD
+ && killed == 2
+ #endif
+ ) {
SERIAL_ERROR_START();
serialprintPGM(serial_msg);
SERIAL_ECHOPGM(MSG_STOPPED_HEATER);
@@ -760,27 +779,28 @@ void Temperature::_temp_error(const heater_ind_t heater, PGM_P const serial_msg,
SERIAL_EOL();
}
- #if DISABLED(BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE)
- if (!killed) {
- Running = false;
- killed = true;
+ disable_all_heaters(); // always disable (even for bogus temp)
- disable_all_heaters();
-
- #if HAS_BUZZER && PIN_EXISTS(BEEPER)
- for (uint8_t i = 20; i--;) {
- WRITE(BEEPER_PIN, HIGH); delay(25);
- WRITE(BEEPER_PIN, LOW); delay(80);
- }
- WRITE(BEEPER_PIN, HIGH);
- #endif
-
- kill(lcd_msg);
+ #if BOGUS_TEMPERATURE_GRACE_PERIOD
+ const millis_t ms = millis();
+ static millis_t expire_ms;
+ switch (killed) {
+ case 0:
+ expire_ms = ms + BOGUS_TEMPERATURE_GRACE_PERIOD;
+ ++killed;
+ break;
+ case 1:
+ if (ELAPSED(ms, expire_ms)) ++killed;
+ break;
+ case 2:
+ loud_kill(lcd_msg);
+ ++killed;
+ break;
}
- else
- disable_all_heaters(); // paranoia
- #else
+ #elif defined(BOGUS_TEMPERATURE_GRACE_PERIOD)
UNUSED(killed);
+ #else
+ if (!killed) { killed = 1; loud_kill(lcd_msg); }
#endif
}
@@ -854,7 +874,7 @@ float Temperature::get_pid_output_hotend(const uint8_t e) {
}
#endif // PID_EXTRUSION_SCALING
- pid_output = constrain(pid_output, 0, PID_MAX);
+ LIMIT(pid_output, 0, PID_MAX);
}
temp_dState[ee] = temp_hotend[ee].current;
@@ -1050,7 +1070,7 @@ void Temperature::manage_heater() {
if (filament_sensor) {
meas_shift_index = filwidth_delay_index[0] - meas_delay_cm;
if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed
- meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
+ LIMIT(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
planner.calculate_volumetric_for_width_sensor(measurement_delay[meas_shift_index]);
}
#endif // FILAMENT_WIDTH_SENSOR
@@ -1655,6 +1675,9 @@ void Temperature::init() {
#if ENABLED(FILAMENT_WIDTH_SENSOR)
HAL_ANALOG_SELECT(FILWIDTH_PIN);
#endif
+ #if HAS_ADC_BUTTONS
+ HAL_ANALOG_SELECT(ADC_KEYPAD_PIN);
+ #endif
HAL_timer_start(TEMP_TIMER_NUM, TEMP_TIMER_FREQUENCY);
ENABLE_TEMPERATURE_INTERRUPT();
diff --git a/Marlin/src/module/thermistor/thermistor_512.h b/Marlin/src/module/thermistor/thermistor_512.h
index 8b89475c05..aa9e9e57f9 100644
--- a/Marlin/src/module/thermistor/thermistor_512.h
+++ b/Marlin/src/module/thermistor/thermistor_512.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/Marlin/src/pins/pins_ESP32.h b/Marlin/src/pins/esp32/pins_ESP32.h
similarity index 100%
rename from Marlin/src/pins/pins_ESP32.h
rename to Marlin/src/pins/esp32/pins_ESP32.h
diff --git a/Marlin/src/pins/pins_RAMPS_LINUX.h b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h
similarity index 92%
rename from Marlin/src/pins/pins_RAMPS_LINUX.h
rename to Marlin/src/pins/linux/pins_RAMPS_LINUX.h
index 0176ead97e..1fd8929716 100644
--- a/Marlin/src/pins/pins_RAMPS_LINUX.h
+++ b/Marlin/src/pins/linux/pins_RAMPS_LINUX.h
@@ -49,6 +49,8 @@
#define BOARD_NAME "RAMPS 1.4"
#endif
+#define E2END 0xFFF // 4KB
+
#define IS_RAMPS_EFB
//
@@ -131,9 +133,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
@@ -219,10 +221,10 @@
#endif
#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN) && !defined(SPINDLE_LASER_ENA_PIN)
- #if NUM_SERVOS <= 1 // try to use servo connector first
- #define CASE_LIGHT_PIN 6 // MUST BE HARDWARE PWM
- #elif !(BOTH(ULTRA_LCD, NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, MINIPANEL, REPRAPWORLD_KEYPAD)) // try to use AUX 2
- #define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
+ #if NUM_SERVOS <= 1 // Prefer the servo connector
+ #define CASE_LIGHT_PIN 6 // Hardware PWM
+ #elif HAS_FREE_AUX2_PINS // try to use AUX 2
+ #define CASE_LIGHT_PIN 44 // Hardware PWM
#endif
#endif
@@ -230,13 +232,13 @@
// M3/M4/M5 - Spindle/Laser Control
//
#if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA)
- #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
- #define SPINDLE_LASER_ENA_PIN 4 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
+ #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Prefer the servo connector
+ #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM
#define SPINDLE_DIR_PIN 5
- #elif !(BOTH(ULTRA_LCD, NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, MINIPANEL, REPRAPWORLD_KEYPAD)) // try to use AUX 2
- #define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+ #elif HAS_FREE_AUX2_PINS // try to use AUX 2
+ #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#define SPINDLE_DIR_PIN 65
#endif
#endif
@@ -269,7 +271,7 @@
#endif
#endif
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
/**
* TMC2208/TMC2209 stepper drivers
*
@@ -540,7 +542,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // Buttons are directly attached using AUX-2
+ // Buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define SHIFT_OUT 40
#define SHIFT_CLK 44
diff --git a/Marlin/src/pins/pins_AZSMZ_MINI.h b/Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h
similarity index 100%
rename from Marlin/src/pins/pins_AZSMZ_MINI.h
rename to Marlin/src/pins/lpc1768/pins_AZSMZ_MINI.h
diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_V1.1.h b/Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.1.h
similarity index 99%
rename from Marlin/src/pins/pins_BIGTREE_SKR_V1.1.h
rename to Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.1.h
index 9c9d30d3bd..d4ead0f4f7 100644
--- a/Marlin/src/pins/pins_BIGTREE_SKR_V1.1.h
+++ b/Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.1.h
@@ -25,9 +25,7 @@
#error "Oops! Make sure you have the LPC1768 environment selected in your IDE."
#endif
-#ifndef BOARD_NAME
- #define BOARD_NAME "BIGTREE SKR V1.1"
-#endif
+#define BOARD_NAME "BIGTREE SKR 1.1"
//
// Limit Switches
diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h b/Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.3.h
similarity index 97%
rename from Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h
rename to Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.3.h
index 87617fbd83..f84eafdf8c 100644
--- a/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h
+++ b/Marlin/src/pins/lpc1768/pins_BIGTREE_SKR_V1.3.h
@@ -25,12 +25,10 @@
#error "Oops! Make sure you have the LPC1768 environment selected in your IDE."
#endif
-#ifndef BOARD_NAME
- #define BOARD_NAME "BIGTREE SKR V1.3"
-#endif
+#define BOARD_NAME "BIGTREE SKR 1.3"
-// Ignore temp readings during develpment.
-//#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Servos
@@ -114,8 +112,8 @@
#endif
#endif
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
- /**
+#if HAS_TMC220x
+ /**
* TMC2208/TMC2209 stepper drivers
*
* Hardware serial communication ports.
diff --git a/Marlin/src/pins/pins_BIQU_B300_V1.0.h b/Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h
similarity index 100%
rename from Marlin/src/pins/pins_BIQU_B300_V1.0.h
rename to Marlin/src/pins/lpc1768/pins_BIQU_B300_V1.0.h
diff --git a/Marlin/src/pins/pins_BIQU_BQ111_A4.h b/Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h
similarity index 100%
rename from Marlin/src/pins/pins_BIQU_BQ111_A4.h
rename to Marlin/src/pins/lpc1768/pins_BIQU_BQ111_A4.h
diff --git a/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h
new file mode 100644
index 0000000000..e2a3d6dc19
--- /dev/null
+++ b/Marlin/src/pins/lpc1768/pins_GMARSH_X6_REV1.h
@@ -0,0 +1,160 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 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 .
+ *
+ */
+#pragma once
+
+#ifndef TARGET_LPC1768
+ #error "Oops! Make sure you have the LPC1768 environment selected in your IDE."
+#endif
+
+#define BOARD_NAME "GMARSH X6 REV1"
+
+// Ignore temp readings during develpment.
+//#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+
+//
+// Enable 12MHz clock output on P1.27 pin to sync TMC2208 chip clocks
+//
+#define LPC1768_ENABLE_CLKOUT_12M
+
+//
+// Servos
+//
+#define SERVO0_PIN P1_26 // PWM1[6]
+#define SERVO1_PIN P1_18 // PWM1[1]
+
+//
+// Limit Switches
+//
+#define X_MIN_PIN P0_00
+#define X_MAX_PIN P0_01
+#define Y_MIN_PIN P0_10
+#define Y_MAX_PIN P0_21
+#define Z_MIN_PIN P2_13
+#define Z_MAX_PIN P2_22
+
+//
+// Steppers
+//
+
+#define X_STEP_PIN P1_01
+#define X_DIR_PIN P1_04
+#define X_ENABLE_PIN P0_26
+
+#define Y_STEP_PIN P1_10
+#define Y_DIR_PIN P1_14
+#define Y_ENABLE_PIN P1_08
+
+#define Z_STEP_PIN P1_17
+#define Z_DIR_PIN P4_29
+#define Z_ENABLE_PIN P1_15
+
+#define E0_STEP_PIN P0_05
+#define E0_DIR_PIN P2_00
+#define E0_ENABLE_PIN P4_28
+
+#define E1_STEP_PIN P2_03
+#define E1_DIR_PIN P2_04
+#define E1_ENABLE_PIN P2_01
+
+#define E2_STEP_PIN P2_07
+#define E2_DIR_PIN P2_08
+#define E2_ENABLE_PIN P2_05
+
+//
+// TMC2208 UART pins
+//
+#if HAS_DRIVER(TMC2208)
+ #define X_SERIAL_TX_PIN P1_00
+ #define X_SERIAL_RX_PIN P1_00
+ #define Y_SERIAL_TX_PIN P1_09
+ #define Y_SERIAL_RX_PIN P1_09
+ #define Z_SERIAL_TX_PIN P1_16
+ #define Z_SERIAL_RX_PIN P1_16
+ #define E0_SERIAL_TX_PIN P0_04
+ #define E0_SERIAL_RX_PIN P0_04
+ #define E1_SERIAL_TX_PIN P2_02
+ #define E1_SERIAL_RX_PIN P2_02
+ #define E2_SERIAL_TX_PIN P2_06
+ #define E2_SERIAL_RX_PIN P2_06
+#else
+ #error "TMC2208 UART configuration is required for GMarsh X6."
+#endif
+
+//
+// Temperature Sensors
+// 3.3V max when defined as an analog input
+//
+#define TEMP_0_PIN 1 // AD0[0] on P0_23
+#define TEMP_BED_PIN 0 // AD0[1] on P0_24
+
+//
+// Heaters / Fans
+//
+#define HEATER_BED_PIN P1_19 // Not a PWM pin, software PWM required
+#define HEATER_0_PIN P3_26 // PWM1[3]
+#define FAN_PIN P3_25 // Part cooling fan - connected to PWM1[2]
+#define E0_AUTO_FAN_PIN P0_27 // Extruder cooling fan
+
+//
+// Misc. Functions
+//
+#define LED_PIN P1_31
+
+//
+// LCD
+//
+#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
+ #define BEEPER_PIN P0_19
+ #define BTN_EN1 P1_23
+ #define BTN_EN2 P1_24
+ #define BTN_ENC P1_25
+ #define LCD_PINS_RS P0_20
+ #define LCD_PINS_ENABLE P0_21
+ #define LCD_PINS_D4 P2_11
+ #define LCD_PINS_D5 P0_22
+ #define LCD_PINS_D6 P1_29
+ #define LCD_PINS_D7 P1_28
+#endif
+
+//
+// SD Support
+//
+
+#ifndef SDCARD_CONNECTION
+ #define SDCARD_CONNECTION LCD
+#endif
+
+#define ONBOARD_SD_CS_PIN P0_06 // Chip select for "System" SD card
+
+#if SD_CONNECTION_IS(LCD)
+ #define SCK_PIN P0_15
+ #define MISO_PIN P0_17
+ #define MOSI_PIN P0_18
+ #define SS_PIN P0_16
+#elif SD_CONNECTION_IS(ONBOARD)
+ #undef SD_DETECT_PIN
+ #define SD_DETECT_PIN P0_27
+ #define SCK_PIN P0_07
+ #define MISO_PIN P0_08
+ #define MOSI_PIN P0_09
+ #define SS_PIN ONBOARD_SD_CS_PIN
+#endif
diff --git a/Marlin/src/pins/pins_MKS_SBASE.h b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h
similarity index 99%
rename from Marlin/src/pins/pins_MKS_SBASE.h
rename to Marlin/src/pins/lpc1768/pins_MKS_SBASE.h
index 2d37f7274e..8bdece7029 100644
--- a/Marlin/src/pins/pins_MKS_SBASE.h
+++ b/Marlin/src/pins/lpc1768/pins_MKS_SBASE.h
@@ -303,7 +303,7 @@
#endif
#endif
-#if MB(MKS_SBASE) && (HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209))
+#if MB(MKS_SBASE) && HAS_TMC220x
// The shortage of pins becomes apparent.
// Worst case you may have to give up the LCD
// RX pins need to be interrupt capable
diff --git a/Marlin/src/pins/pins_MKS_SGEN_L.h b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h
similarity index 98%
rename from Marlin/src/pins/pins_MKS_SGEN_L.h
rename to Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h
index 9d20eb3be9..564cee19b8 100644
--- a/Marlin/src/pins/pins_MKS_SGEN_L.h
+++ b/Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h
@@ -29,7 +29,7 @@
#error "Oops! Make sure you have the LPC1768 environment selected in your IDE."
#endif
-#define BOARD_NAME "MKS SGEN-L"
+#define BOARD_NAME "MKS SGen-L"
#define BOARD_WEBSITE_URL "https://github.com/makerbase-mks/MKS-SGEN_L"
//
@@ -108,7 +108,7 @@
#endif
#endif
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
/**
* TMC2208 stepper drivers
*
diff --git a/Marlin/src/pins/pins_RAMPS_RE_ARM.h b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h
similarity index 99%
rename from Marlin/src/pins/pins_RAMPS_RE_ARM.h
rename to Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h
index 5ee4e1ad6f..12d20b2943 100644
--- a/Marlin/src/pins/pins_RAMPS_RE_ARM.h
+++ b/Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h
@@ -113,7 +113,7 @@
#endif
#endif
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
/**
* TMC2208/TMC2209 stepper drivers
*
diff --git a/Marlin/src/pins/pins_SELENA_COMPACT.h b/Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h
similarity index 100%
rename from Marlin/src/pins/pins_SELENA_COMPACT.h
rename to Marlin/src/pins/lpc1768/pins_SELENA_COMPACT.h
diff --git a/Marlin/src/pins/pins_TH3D_EZBOARD.h b/Marlin/src/pins/lpc1768/pins_TH3D_EZBOARD.h
similarity index 100%
rename from Marlin/src/pins/pins_TH3D_EZBOARD.h
rename to Marlin/src/pins/lpc1768/pins_TH3D_EZBOARD.h
diff --git a/Marlin/src/pins/pins_AZTEEG_X5_GT.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h
old mode 100755
new mode 100644
similarity index 96%
rename from Marlin/src/pins/pins_AZTEEG_X5_GT.h
rename to Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h
index 11dd45a6a5..fed88b4656
--- a/Marlin/src/pins/pins_AZTEEG_X5_GT.h
+++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_GT.h
@@ -30,7 +30,7 @@
#endif
#define BOARD_NAME "Azteeg X5 GT"
-#define BOARD_WEBSITE_URL "https://www.panucatt.com/azteeg_X5_GT_reprap_3d_printer_controller_p/ax5gt.htm"
+#define BOARD_WEBSITE_URL "https://tinyurl.com/yx8tdqa3"
//
// Set CPU
diff --git a/Marlin/src/pins/pins_AZTEEG_X5_MINI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h
similarity index 99%
rename from Marlin/src/pins/pins_AZTEEG_X5_MINI.h
rename to Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h
index 41936bd6d0..a685480757 100644
--- a/Marlin/src/pins/pins_AZTEEG_X5_MINI.h
+++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI.h
@@ -30,7 +30,7 @@
#endif
#ifndef BOARD_NAME
- #define BOARD_NAME "Azteeg X5 MINI"
+ #define BOARD_NAME "Azteeg X5 MINI"
#endif
#define BOARD_WEBSITE_URL "http://www.panucatt.com/azteeg_X5_mini_reprap_3d_printer_controller_p/ax5mini.htm"
diff --git a/Marlin/src/pins/pins_AZTEEG_X5_MINI_WIFI.h b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h
similarity index 96%
rename from Marlin/src/pins/pins_AZTEEG_X5_MINI_WIFI.h
rename to Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h
index 03005ecb4f..6cbdb335f3 100644
--- a/Marlin/src/pins/pins_AZTEEG_X5_MINI_WIFI.h
+++ b/Marlin/src/pins/lpc1769/pins_AZTEEG_X5_MINI_WIFI.h
@@ -29,7 +29,7 @@
#error "Oops! Make sure you have the LPC1769 environment selected in your IDE."
#endif
-#define BOARD_NAME "Azteeg X5 MINI WIFI"
+#define BOARD_NAME "Azteeg X5 MINI WIFI"
//
// DIGIPOT slave addresses
diff --git a/Marlin/src/pins/pins_COHESION3D_MINI.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h
similarity index 100%
rename from Marlin/src/pins/pins_COHESION3D_MINI.h
rename to Marlin/src/pins/lpc1769/pins_COHESION3D_MINI.h
diff --git a/Marlin/src/pins/pins_COHESION3D_REMIX.h b/Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h
similarity index 100%
rename from Marlin/src/pins/pins_COHESION3D_REMIX.h
rename to Marlin/src/pins/lpc1769/pins_COHESION3D_REMIX.h
diff --git a/Marlin/src/pins/pins_MKS_SGEN.h b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h
similarity index 94%
rename from Marlin/src/pins/pins_MKS_SGEN.h
rename to Marlin/src/pins/lpc1769/pins_MKS_SGEN.h
index 921ec60c36..89f1d800d4 100644
--- a/Marlin/src/pins/pins_MKS_SGEN.h
+++ b/Marlin/src/pins/lpc1769/pins_MKS_SGEN.h
@@ -29,10 +29,10 @@
#error "Oops! Make sure you have the LPC1769 environment selected in your IDE."
#endif
-#define BOARD_NAME "MKS SGEN"
+#define BOARD_NAME "MKS SGen"
#define BOARD_WEBSITE_URL "https://github.com/makerbase-mks/MKS-SGEN"
-#include "pins_MKS_SBASE.h"
+#include "../lpc1768/pins_MKS_SBASE.h"
#undef E1_STEP_PIN
#undef E1_DIR_PIN
@@ -43,7 +43,7 @@
//#define BTN_EN1 P1_23 // EXP2.5
//#define BTN_EN2 P1_22 // EXP2.3
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
// The shortage of pins becomes apparent.
// In the worst case you may have to give up the LCD.
// RX pins must be interrupt-capable.
diff --git a/Marlin/src/pins/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h
similarity index 100%
rename from Marlin/src/pins/pins_SMOOTHIEBOARD.h
rename to Marlin/src/pins/lpc1769/pins_SMOOTHIEBOARD.h
diff --git a/Marlin/src/pins/pins_CHEAPTRONIC.h b/Marlin/src/pins/mega/pins_CHEAPTRONIC.h
similarity index 100%
rename from Marlin/src/pins/pins_CHEAPTRONIC.h
rename to Marlin/src/pins/mega/pins_CHEAPTRONIC.h
diff --git a/Marlin/src/pins/pins_CHEAPTRONICv2.h b/Marlin/src/pins/mega/pins_CHEAPTRONICv2.h
similarity index 100%
rename from Marlin/src/pins/pins_CHEAPTRONICv2.h
rename to Marlin/src/pins/mega/pins_CHEAPTRONICv2.h
diff --git a/Marlin/src/pins/pins_CNCONTROLS_11.h b/Marlin/src/pins/mega/pins_CNCONTROLS_11.h
similarity index 100%
rename from Marlin/src/pins/pins_CNCONTROLS_11.h
rename to Marlin/src/pins/mega/pins_CNCONTROLS_11.h
diff --git a/Marlin/src/pins/pins_CNCONTROLS_12.h b/Marlin/src/pins/mega/pins_CNCONTROLS_12.h
similarity index 100%
rename from Marlin/src/pins/pins_CNCONTROLS_12.h
rename to Marlin/src/pins/mega/pins_CNCONTROLS_12.h
diff --git a/Marlin/src/pins/pins_EINSTART-S.h b/Marlin/src/pins/mega/pins_EINSTART-S.h
old mode 100755
new mode 100644
similarity index 84%
rename from Marlin/src/pins/pins_EINSTART-S.h
rename to Marlin/src/pins/mega/pins_EINSTART-S.h
index 89e69dda5d..78e2fe2c05
--- a/Marlin/src/pins/pins_EINSTART-S.h
+++ b/Marlin/src/pins/mega/pins_EINSTART-S.h
@@ -26,16 +26,8 @@
* PCB Silkscreen: 3DPrinterCon_v3.5
*/
-#if ENABLED(TARGET_LPC1768)
- #error "Oops! Set MOTHERBOARD to an LPC1768-based board when building for LPC1768."
-#elif defined(__STM32F1__)
- #error "Oops! Set MOTHERBOARD to an STM32F1-based board when building for STM32F1."
-#endif
-
-#if NONE(IS_RAMPS_SMART, IS_RAMPS_DUO, IS_RAMPS4DUE, TARGET_LPC1768)
- #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
- #error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
- #endif
+#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
+ #error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
#define BOARD_NAME "Einstart-S"
diff --git a/Marlin/src/pins/pins_ELEFU_3.h b/Marlin/src/pins/mega/pins_ELEFU_3.h
similarity index 100%
rename from Marlin/src/pins/pins_ELEFU_3.h
rename to Marlin/src/pins/mega/pins_ELEFU_3.h
diff --git a/Marlin/src/pins/pins_GT2560_REV_A.h b/Marlin/src/pins/mega/pins_GT2560_REV_A.h
similarity index 100%
rename from Marlin/src/pins/pins_GT2560_REV_A.h
rename to Marlin/src/pins/mega/pins_GT2560_REV_A.h
diff --git a/Marlin/src/pins/pins_GT2560_REV_A_PLUS.h b/Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h
similarity index 100%
rename from Marlin/src/pins/pins_GT2560_REV_A_PLUS.h
rename to Marlin/src/pins/mega/pins_GT2560_REV_A_PLUS.h
diff --git a/Marlin/src/pins/pins_GT2560_V3.h b/Marlin/src/pins/mega/pins_GT2560_V3.h
similarity index 86%
rename from Marlin/src/pins/pins_GT2560_V3.h
rename to Marlin/src/pins/mega/pins_GT2560_V3.h
index 4f0667d0b7..10db766da3 100644
--- a/Marlin/src/pins/pins_GT2560_V3.h
+++ b/Marlin/src/pins/mega/pins_GT2560_V3.h
@@ -149,15 +149,33 @@
//
#define BEEPER_PIN 18
-#define LCD_PINS_RS 20
-#define LCD_PINS_ENABLE 17
-#define LCD_PINS_D4 16
-#define LCD_PINS_D5 21
-#define LCD_PINS_D6 5
-#define LCD_PINS_D7 36
+#ifndef LCD_PINS_RS
+ #define LCD_PINS_RS 20
+#endif
+#ifndef LCD_PINS_ENABLE
+ #define LCD_PINS_ENABLE 17
+#endif
+#ifndef LCD_PINS_D4
+ #define LCD_PINS_D4 16
+#endif
+#ifndef LCD_PINS_D5
+ #define LCD_PINS_D5 21
+#endif
+#ifndef LCD_PINS_D6
+ #define LCD_PINS_D6 5
+#endif
+#ifndef LCD_PINS_D7
+ #define LCD_PINS_D7 36
+#endif
#if ENABLED(NEWPANEL)
- #define BTN_EN1 42
- #define BTN_EN2 40
- #define BTN_ENC 19
+ #ifndef BTN_EN1
+ #define BTN_EN1 42
+ #endif
+ #ifndef BTN_EN2
+ #define BTN_EN2 40
+ #endif
+ #ifndef BTN_ENC
+ #define BTN_ENC 19
+ #endif
#endif
diff --git a/Marlin/src/pins/pins_GT2560_V3_A20.h b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h
similarity index 89%
rename from Marlin/src/pins/pins_GT2560_V3_A20.h
rename to Marlin/src/pins/mega/pins_GT2560_V3_A20.h
index 5565ac62cd..e3b6895af1 100644
--- a/Marlin/src/pins/pins_GT2560_V3_A20.h
+++ b/Marlin/src/pins/mega/pins_GT2560_V3_A20.h
@@ -25,22 +25,15 @@
* Geeetech A20M pin assignment
*/
-#include "pins_GT2560_V3.h"
-
-#undef LCD_PINS_RS
-#undef LCD_PINS_ENABLE
-#undef LCD_PINS_D4
-#undef LCD_PINS_D7
#define LCD_PINS_RS 5
#define LCD_PINS_ENABLE 36
#define LCD_PINS_D4 21
#define LCD_PINS_D7 6
#if ENABLED(NEWPANEL)
- #undef BTN_EN1
- #undef BTN_EN2
- #undef BTN_ENC
#define BTN_EN1 16
#define BTN_EN2 17
#define BTN_ENC 19
#endif
+
+#include "pins_GT2560_V3.h"
diff --git a/Marlin/src/pins/pins_GT2560_V3_MC2.h b/Marlin/src/pins/mega/pins_GT2560_V3_MC2.h
similarity index 100%
rename from Marlin/src/pins/pins_GT2560_V3_MC2.h
rename to Marlin/src/pins/mega/pins_GT2560_V3_MC2.h
diff --git a/Marlin/src/pins/pins_LEAPFROG.h b/Marlin/src/pins/mega/pins_LEAPFROG.h
similarity index 100%
rename from Marlin/src/pins/pins_LEAPFROG.h
rename to Marlin/src/pins/mega/pins_LEAPFROG.h
diff --git a/Marlin/src/pins/pins_MEGACONTROLLER.h b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h
similarity index 96%
rename from Marlin/src/pins/pins_MEGACONTROLLER.h
rename to Marlin/src/pins/mega/pins_MEGACONTROLLER.h
index 14fec34ec6..aac1620482 100644
--- a/Marlin/src/pins/pins_MEGACONTROLLER.h
+++ b/Marlin/src/pins/mega/pins_MEGACONTROLLER.h
@@ -161,6 +161,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 7 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 7 // Pullup!
#define SPINDLE_DIR_PIN 8
diff --git a/Marlin/src/pins/pins_MEGATRONICS.h b/Marlin/src/pins/mega/pins_MEGATRONICS.h
similarity index 94%
rename from Marlin/src/pins/pins_MEGATRONICS.h
rename to Marlin/src/pins/mega/pins_MEGATRONICS.h
index 44a487cbbc..c0b009392c 100644
--- a/Marlin/src/pins/pins_MEGATRONICS.h
+++ b/Marlin/src/pins/mega/pins_MEGATRONICS.h
@@ -114,7 +114,7 @@
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
- // Buttons directly attached using AUX-2
+ // Buttons directly attached to AUX-2
#define BTN_EN1 59
#define BTN_EN2 64
#define BTN_ENC 43
@@ -126,6 +126,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 3 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 4 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 4 // Pullup!
#define SPINDLE_DIR_PIN 11
diff --git a/Marlin/src/pins/pins_MEGATRONICS_2.h b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h
similarity index 95%
rename from Marlin/src/pins/pins_MEGATRONICS_2.h
rename to Marlin/src/pins/mega/pins_MEGATRONICS_2.h
index fa154555f7..90ddc5cc0d 100644
--- a/Marlin/src/pins/pins_MEGATRONICS_2.h
+++ b/Marlin/src/pins/mega/pins_MEGATRONICS_2.h
@@ -29,7 +29,7 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
-#define BOARD_NAME "Megatronics v2.0"
+#define BOARD_NAME "Megatronics v2.0"
//
// Limit Switches
//
@@ -141,6 +141,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 3 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 16 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 3 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 16 // Pullup!
#define SPINDLE_DIR_PIN 11
diff --git a/Marlin/src/pins/pins_MEGATRONICS_3.h b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h
similarity index 94%
rename from Marlin/src/pins/pins_MEGATRONICS_3.h
rename to Marlin/src/pins/mega/pins_MEGATRONICS_3.h
index 863680637f..77edc79e19 100644
--- a/Marlin/src/pins/pins_MEGATRONICS_3.h
+++ b/Marlin/src/pins/mega/pins_MEGATRONICS_3.h
@@ -174,8 +174,8 @@
// M3/M4/M5 - Spindle/Laser Control
//
#if DISABLED(REPRAPWORLD_KEYPAD) // try to use the keypad connector first
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 43 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 43 // Pullup!
#define SPINDLE_DIR_PIN 42
#elif EXTRUDERS <= 2
// Hijack the last extruder so that we can get the PWM signal off the Y breakout
@@ -189,7 +189,7 @@
#define Y_ENABLE_PIN 23
#define Y_STEP_PIN 22
#define Y_DIR_PIN 60
- #define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 17 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 17 // Pullup!
#define SPINDLE_DIR_PIN 5
#endif
diff --git a/Marlin/src/pins/pins_MIGHTYBOARD_REVE.h b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
similarity index 98%
rename from Marlin/src/pins/pins_MIGHTYBOARD_REVE.h
rename to Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
index 4cb4935252..4b93add4c0 100644
--- a/Marlin/src/pins/pins_MIGHTYBOARD_REVE.h
+++ b/Marlin/src/pins/mega/pins_MIGHTYBOARD_REVE.h
@@ -41,8 +41,8 @@
#error "Oops! Select 'Mega 1280' or 'Mega 2560' in 'Tools > Board.'"
#endif
-#define DEFAULT_MACHINE_NAME "MB Replicator"
-#define BOARD_NAME "Mightyboard"
+#define BOARD_NAME "Mightyboard"
+#define DEFAULT_MACHINE_NAME "MB Replicator"
//
// Servos
diff --git a/Marlin/src/pins/pins_MINITRONICS.h b/Marlin/src/pins/mega/pins_MINITRONICS.h
similarity index 100%
rename from Marlin/src/pins/pins_MINITRONICS.h
rename to Marlin/src/pins/mega/pins_MINITRONICS.h
diff --git a/Marlin/src/pins/pins_SILVER_GATE.h b/Marlin/src/pins/mega/pins_SILVER_GATE.h
similarity index 100%
rename from Marlin/src/pins/pins_SILVER_GATE.h
rename to Marlin/src/pins/mega/pins_SILVER_GATE.h
diff --git a/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h
new file mode 100644
index 0000000000..4628d4f00e
--- /dev/null
+++ b/Marlin/src/pins/mega/pins_WANHAO_ONEPLUS.h
@@ -0,0 +1,112 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 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 .
+ *
+ */
+#pragma once
+
+/**
+ * Wanhao 0ne+ pin assignments
+ */
+
+#ifndef __AVR_ATmega2560__
+ #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."
+#endif
+
+#define BOARD_NAME "Wanhao i3 Mini 0ne+"
+#define DEFAULT_MACHINE_NAME "i3 Mini"
+#define BOARD_WEBSITE_URL "https://tinyurl.com/yyxw7se7"
+
+//
+// Limit Switches
+//
+#define X_STOP_PIN 19
+#define Y_STOP_PIN 18
+#define Z_STOP_PIN 38
+
+//
+// Z Probe (when not Z_MIN_PIN)
+//
+#ifndef Z_MIN_PROBE_PIN
+ #define Z_MIN_PROBE_PIN 38
+#endif
+
+//
+// Steppers
+//
+#define X_STEP_PIN 22
+#define X_DIR_PIN 23
+#define X_ENABLE_PIN 57
+
+#define Y_STEP_PIN 25
+#define Y_DIR_PIN 26
+#define Y_ENABLE_PIN 24
+
+#define Z_STEP_PIN 29
+#define Z_DIR_PIN 39
+#define Z_ENABLE_PIN 28
+
+#define E0_STEP_PIN 55
+#define E0_DIR_PIN 56
+#define E0_ENABLE_PIN 54
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN 13
+#define TEMP_BED_PIN 14
+
+//
+// Heaters / Fans
+//
+#define HEATER_0_PIN 4
+#define HEATER_BED_PIN 44
+#define FAN_PIN 12 // IO pin. Buffer needed
+
+//
+// SD Card
+//
+#define SD_DETECT_PIN -1
+#define SDPOWER -1
+#define SDSS 53
+
+//
+// Misc. Functions
+//
+#define BEEPER_PIN 37
+#define KILL_PIN 64
+
+//
+// LCD / Controller
+//
+
+#if HAS_SPI_LCD
+ #define DOGLCD_A0 40
+ #define DOGLCD_CS 41
+ #define LCD_BACKLIGHT_PIN 65 // Backlight LED on A11/D65
+ #define LCD_RESET_PIN 27
+
+ #define LCD_CONTRAST 255
+
+ #if ENABLED(NEWPANEL)
+ #define BTN_EN1 2
+ #define BTN_EN2 3
+ #define BTN_ENC 5
+ #endif
+#endif
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index da03ca25ed..5e503cdac4 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -47,451 +47,472 @@
#define IS_RAMPS_SF
#endif
+#define HAS_FREE_AUX2_PINS !(BOTH(ULTRA_LCD, NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, MINIPANEL, REPRAPWORLD_KEYPAD))
+
//
// RAMPS 1.3 / 1.4 - ATmega1280, ATmega2560
//
#if MB(RAMPS_OLD)
- #include "pins_RAMPS_OLD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_OLD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_13_EFB)
- #include "pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_13_EEB)
- #include "pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_13_EFF)
- #include "pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_13_EEF)
- #include "pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_13_SF)
- #include "pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_14_EFB)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_14_EEB)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_14_EFF)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_14_EEF)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_14_SF)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_PLUS_EFB)
- #include "pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_PLUS_EEB)
- #include "pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_PLUS_EFF)
- #include "pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_PLUS_EEF)
- #include "pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RAMPS_PLUS_SF)
- #include "pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
//
// RAMPS Derivatives - ATmega1280, ATmega2560
//
#elif MB(3DRAG)
- #include "pins_3DRAG.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_3DRAG.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(K8200)
- #include "pins_K8200.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
+ #include "ramps/pins_K8200.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
#elif MB(K8400)
- #include "pins_K8400.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
+ #include "ramps/pins_K8400.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
#elif MB(K8800)
- #include "pins_K8800.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
+ #include "ramps/pins_K8800.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (3DRAG)
#elif MB(BAM_DICE)
- #include "pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RAMPS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(BAM_DICE_DUE)
- #include "pins_BAM_DICE_DUE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_BAM_DICE_DUE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MKS_BASE)
- #include "pins_MKS_BASE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_MKS_BASE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MKS_BASE_14)
- #include "pins_MKS_BASE_14.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_MKS_BASE_14.h" // ATmega2560 env:megaatmega2560
#elif MB(MKS_BASE_15)
- #include "pins_MKS_BASE_15.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_MKS_BASE_15.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MKS_BASE_HEROIC)
- #include "pins_MKS_BASE_HEROIC.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_MKS_BASE_HEROIC.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MKS_GEN_13)
- #include "pins_MKS_GEN_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_MKS_GEN_13.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MKS_GEN_L)
- #include "pins_MKS_GEN_L.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_MKS_GEN_L.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(KFB_2)
- #include "pins_BIQU_KFB_2.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_BIQU_KFB_2.h" // ATmega2560 env:megaatmega2560
#elif MB(ZRIB_V20)
- #include "pins_ZRIB_V20.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (MKS_GEN_13)
+ #include "ramps/pins_ZRIB_V20.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560 (MKS_GEN_13)
#elif MB(FELIX2)
- #include "pins_FELIX2.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_FELIX2.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RIGIDBOARD)
- #include "pins_RIGIDBOARD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RIGIDBOARD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(RIGIDBOARD_V2)
- #include "pins_RIGIDBOARD_V2.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_RIGIDBOARD_V2.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(SAINSMART_2IN1)
- #include "pins_SAINSMART_2IN1.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_SAINSMART_2IN1.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(ULTIMAKER)
- #include "pins_ULTIMAKER.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_ULTIMAKER.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(ULTIMAKER_OLD)
- #include "pins_ULTIMAKER_OLD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "ramps/pins_ULTIMAKER_OLD.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(AZTEEG_X3)
- #include "pins_AZTEEG_X3.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_AZTEEG_X3.h" // ATmega2560 env:megaatmega2560
#elif MB(AZTEEG_X3_PRO)
- #include "pins_AZTEEG_X3_PRO.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_AZTEEG_X3_PRO.h" // ATmega2560 env:megaatmega2560
#elif MB(ULTIMAIN_2)
- #include "pins_ULTIMAIN_2.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_ULTIMAIN_2.h" // ATmega2560 env:megaatmega2560
#elif MB(FORMBOT_RAPTOR)
- #include "pins_FORMBOT_RAPTOR.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_FORMBOT_RAPTOR.h" // ATmega2560 env:megaatmega2560
#elif MB(FORMBOT_RAPTOR2)
- #include "pins_FORMBOT_RAPTOR2.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_FORMBOT_RAPTOR2.h" // ATmega2560 env:megaatmega2560
#elif MB(FORMBOT_TREX2PLUS)
- #include "pins_FORMBOT_TREX2PLUS.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_FORMBOT_TREX2PLUS.h" // ATmega2560 env:megaatmega2560
#elif MB(FORMBOT_TREX3)
- #include "pins_FORMBOT_TREX3.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_FORMBOT_TREX3.h" // ATmega2560 env:megaatmega2560
#elif MB(RUMBA)
- #include "pins_RUMBA.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RUMBA.h" // ATmega2560 env:megaatmega2560
#elif MB(RUMBA_RAISE3D)
- #include "pins_RUMBA_RAISE3D.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RUMBA_RAISE3D.h" // ATmega2560 env:megaatmega2560
#elif MB(RL200)
- #include "pins_RL200.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RL200.h" // ATmega2560 env:megaatmega2560
#elif MB(BQ_ZUM_MEGA_3D)
- #include "pins_BQ_ZUM_MEGA_3D.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_BQ_ZUM_MEGA_3D.h" // ATmega2560 env:megaatmega2560
#elif MB(MAKEBOARD_MINI)
- #include "pins_MAKEBOARD_MINI.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_MAKEBOARD_MINI.h" // ATmega2560 env:megaatmega2560
#elif MB(TRIGORILLA_13)
- #include "pins_TRIGORILLA_13.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_TRIGORILLA_13.h" // ATmega2560 env:megaatmega2560
#elif MB(TRIGORILLA_14)
- #include "pins_TRIGORILLA_14.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_TRIGORILLA_14.h" // ATmega2560 env:megaatmega2560
#elif MB(TRIGORILLA_14_11)
- #include "pins_TRIGORILLA_14.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_TRIGORILLA_14.h" // ATmega2560 env:megaatmega2560
#elif MB(RAMPS_ENDER_4)
- #include "pins_RAMPS_ENDER_4.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RAMPS_ENDER_4.h" // ATmega2560 env:megaatmega2560
#elif MB(RAMPS_CREALITY)
- #include "pins_RAMPS_CREALITY.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RAMPS_CREALITY.h" // ATmega2560 env:megaatmega2560
#elif MB(RAMPS_DAGOMA)
- #include "pins_RAMPS_DAGOMA.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_RAMPS_DAGOMA.h" // ATmega2560 env:megaatmega2560
#elif MB(FYSETC_F6_13)
- #include "pins_FYSETC_F6_13.h" // ATmega2560 env:fysetc_f6_13
+ #include "ramps/pins_FYSETC_F6_13.h" // ATmega2560 env:fysetc_f6_13
#elif MB(DUPLICATOR_I3_PLUS)
- #include "pins_DUPLICATOR_I3_PLUS.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_DUPLICATOR_I3_PLUS.h" // ATmega2560 env:megaatmega2560
#elif MB(VORON)
- #include "pins_VORON.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_VORON.h" // ATmega2560 env:megaatmega2560
#elif MB(TRONXY_V3_1_0)
- #include "pins_TRONXY_V3_1_0.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_TRONXY_V3_1_0.h" // ATmega2560 env:megaatmega2560
#elif MB(Z_BOLT_X_SERIES)
- #include "pins_Z_BOLT_X_SERIES.h" // ATmega2560 env:megaatmega2560
+ #include "ramps/pins_Z_BOLT_X_SERIES.h" // ATmega2560 env:megaatmega2560
+
+//
+// RAMBo and derivatives
+//
+
+#elif MB(RAMBO)
+ #include "rambo/pins_RAMBO.h" // ATmega2560 env:rambo
+#elif MB(MINIRAMBO) || MB(MINIRAMBO_10A)
+ #include "rambo/pins_MINIRAMBO.h" // ATmega2560 env:rambo
+#elif MB(EINSY_RAMBO)
+ #include "rambo/pins_EINSY_RAMBO.h" // ATmega2560 env:rambo
+#elif MB(EINSY_RETRO)
+ #include "rambo/pins_EINSY_RETRO.h" // ATmega2560 env:rambo
+#elif MB(SCOOVO_X9H)
+ #include "rambo/pins_SCOOVO_X9H.h" // ATmega2560 env:rambo
//
// Other ATmega1280, ATmega2560
//
#elif MB(CNCONTROLS_11)
- #include "pins_CNCONTROLS_11.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_CNCONTROLS_11.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(CNCONTROLS_12)
- #include "pins_CNCONTROLS_12.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_CNCONTROLS_12.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MIGHTYBOARD_REVE)
- #include "pins_MIGHTYBOARD_REVE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_MIGHTYBOARD_REVE.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(CHEAPTRONIC)
- #include "pins_CHEAPTRONIC.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_CHEAPTRONIC.h" // ATmega2560 env:megaatmega2560
#elif MB(CHEAPTRONIC_V2)
- #include "pins_CHEAPTRONICv2.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_CHEAPTRONICv2.h" // ATmega2560 env:megaatmega2560
#elif MB(MEGATRONICS)
- #include "pins_MEGATRONICS.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_MEGATRONICS.h" // ATmega2560 env:megaatmega2560
#elif MB(MEGATRONICS_2)
- #include "pins_MEGATRONICS_2.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_MEGATRONICS_2.h" // ATmega2560 env:megaatmega2560
#elif MB(MEGATRONICS_3) || MB(MEGATRONICS_31) || MB(MEGATRONICS_32)
- #include "pins_MEGATRONICS_3.h" // ATmega2560 env:megaatmega2560
-#elif MB(RAMBO)
- #include "pins_RAMBO.h" // ATmega2560 env:rambo
-#elif MB(MINIRAMBO) || MB(MINIRAMBO_10A)
- #include "pins_MINIRAMBO.h" // ATmega2560 env:rambo
-#elif MB(EINSY_RAMBO)
- #include "pins_EINSY_RAMBO.h" // ATmega2560 env:rambo
-#elif MB(EINSY_RETRO)
- #include "pins_EINSY_RETRO.h" // ATmega2560 env:rambo
+ #include "mega/pins_MEGATRONICS_3.h" // ATmega2560 env:megaatmega2560
#elif MB(ELEFU_3)
- #include "pins_ELEFU_3.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_ELEFU_3.h" // ATmega2560 env:megaatmega2560
#elif MB(LEAPFROG)
- #include "pins_LEAPFROG.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_LEAPFROG.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(MEGACONTROLLER)
- #include "pins_MEGACONTROLLER.h" // ATmega2560 env:megaatmega2560
-#elif MB(SCOOVO_X9H)
- #include "pins_SCOOVO_X9H.h" // ATmega2560 env:rambo
+ #include "mega/pins_MEGACONTROLLER.h" // ATmega2560 env:megaatmega2560
#elif MB(GT2560_REV_A)
- #include "pins_GT2560_REV_A.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_GT2560_REV_A.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(GT2560_REV_A_PLUS)
- #include "pins_GT2560_REV_A_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_GT2560_REV_A_PLUS.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
#elif MB(GT2560_V3)
- #include "pins_GT2560_V3.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_GT2560_V3.h" // ATmega2560 env:megaatmega2560
#elif MB(GT2560_V3_MC2)
- #include "pins_GT2560_V3_MC2.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_GT2560_V3_MC2.h" // ATmega2560 env:megaatmega2560
#elif MB(GT2560_V3_A20)
- #include "pins_GT2560_V3_A20.h" // ATmega2560 env:megaatmega2560
+ #include "mega/pins_GT2560_V3_A20.h" // ATmega2560 env:megaatmega2560
#elif MB(EINSTART_S)
- #include "pins_EINSTART-S.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+ #include "mega/pins_EINSTART-S.h" // ATmega1280, ATmega2560 env:megaatmega1280 env:megaatmega2560
+#elif MB(WANHAO_ONEPLUS)
+ #include "mega/pins_WANHAO_ONEPLUS.h" // ATmega2560 env:megaatmega2560
//
// ATmega1281, ATmega2561
//
#elif MB(MINITRONICS)
- #include "pins_MINITRONICS.h" // ATmega1281 env:megaatmega1280
+ #include "mega/pins_MINITRONICS.h" // ATmega1281 env:megaatmega1280
#elif MB(SILVER_GATE)
- #include "pins_SILVER_GATE.h" // ATmega2561 env:megaatmega2560
+ #include "mega/pins_SILVER_GATE.h" // ATmega2561 env:megaatmega2560
//
// Sanguinololu and Derivatives - ATmega644P, ATmega1284P
//
#elif MB(SANGUINOLOLU_11)
- #include "pins_SANGUINOLOLU_11.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_SANGUINOLOLU_11.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(SANGUINOLOLU_12)
- #include "pins_SANGUINOLOLU_12.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_SANGUINOLOLU_12.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(MELZI)
- #include "pins_MELZI.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_MELZI.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(MELZI_MAKR3D)
- #include "pins_MELZI_MAKR3D.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_MELZI_MAKR3D.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(MELZI_CREALITY)
- #include "pins_MELZI_CREALITY.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_MELZI_CREALITY.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(MELZI_MALYAN)
- #include "pins_MELZI_MALYAN.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_MELZI_MALYAN.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(MELZI_TRONXY)
- #include "pins_MELZI_TRONXY.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_MELZI_TRONXY.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(STB_11)
- #include "pins_STB_11.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_STB_11.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(AZTEEG_X1)
- #include "pins_AZTEEG_X1.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_AZTEEG_X1.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
//
// Other ATmega644P, ATmega644, ATmega1284P
//
#elif MB(GEN3_MONOLITHIC)
- #include "pins_GEN3_MONOLITHIC.h" // ATmega644P env:sanguino_atmega644p
+ #include "sanguino/pins_GEN3_MONOLITHIC.h" // ATmega644P env:sanguino_atmega644p
#elif MB(GEN3_PLUS)
- #include "pins_GEN3_PLUS.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN3_PLUS.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN6)
- #include "pins_GEN6.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN6.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN6_DELUXE)
- #include "pins_GEN6_DELUXE.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN6_DELUXE.h" // ATmega644P, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN7_CUSTOM)
- #include "pins_GEN7_CUSTOM.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN7_CUSTOM.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN7_12)
- #include "pins_GEN7_12.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN7_12.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN7_13)
- #include "pins_GEN7_13.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN7_13.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(GEN7_14)
- #include "pins_GEN7_14.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_GEN7_14.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
#elif MB(OMCA_A)
- #include "pins_OMCA_A.h" // ATmega644 env:sanguino_atmega644p
+ #include "sanguino/pins_OMCA_A.h" // ATmega644 env:sanguino_atmega644p
#elif MB(OMCA)
- #include "pins_OMCA.h" // ATmega644P, ATmega644 env:sanguino_atmega644p
+ #include "sanguino/pins_OMCA.h" // ATmega644P, ATmega644 env:sanguino_atmega644p
#elif MB(ANET_10)
- #include "pins_ANET_10.h" // ATmega1284P env:sanguino_atmega1284p
+ #include "sanguino/pins_ANET_10.h" // ATmega1284P env:sanguino_atmega1284p
#elif MB(SETHI)
- #include "pins_SETHI.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
+ #include "sanguino/pins_SETHI.h" // ATmega644P, ATmega644, ATmega1284P env:sanguino_atmega644p env:sanguino_atmega1284p
//
// Teensyduino - AT90USB1286, AT90USB1286P
//
#elif MB(TEENSYLU)
- #include "pins_TEENSYLU.h" // AT90USB1286, AT90USB1286P env:at90usb1286_cdc
+ #include "teensy2/pins_TEENSYLU.h" // AT90USB1286, AT90USB1286P env:at90usb1286_cdc
#elif MB(PRINTRBOARD)
- #include "pins_PRINTRBOARD.h" // AT90USB1286 env:at90usb1286_dfu
+ #include "teensy2/pins_PRINTRBOARD.h" // AT90USB1286 env:at90usb1286_dfu
#elif MB(PRINTRBOARD_REVF)
- #include "pins_PRINTRBOARD_REVF.h" // AT90USB1286 env:at90usb1286_dfu
+ #include "teensy2/pins_PRINTRBOARD_REVF.h" // AT90USB1286 env:at90usb1286_dfu
#elif MB(BRAINWAVE)
- #include "pins_BRAINWAVE.h" // AT90USB646 env:at90usb1286_cdc
+ #include "teensy2/pins_BRAINWAVE.h" // AT90USB646 env:at90usb1286_cdc
#elif MB(BRAINWAVE_PRO)
- #include "pins_BRAINWAVE_PRO.h" // AT90USB1286 env:at90usb1286_cdc
+ #include "teensy2/pins_BRAINWAVE_PRO.h" // AT90USB1286 env:at90usb1286_cdc
#elif MB(SAV_MKI)
- #include "pins_SAV_MKI.h" // AT90USB1286 env:at90usb1286_cdc
+ #include "teensy2/pins_SAV_MKI.h" // AT90USB1286 env:at90usb1286_cdc
#elif MB(TEENSY2)
- #include "pins_TEENSY2.h" // AT90USB1286 env:teensy20
+ #include "teensy2/pins_TEENSY2.h" // AT90USB1286 env:teensy20
#elif MB(5DPRINT)
- #include "pins_5DPRINT.h" // AT90USB1286 env:at90usb1286_dfu
+ #include "teensy2/pins_5DPRINT.h" // AT90USB1286 env:at90usb1286_dfu
//
// LPC1768 ARM Cortex M3
//
#elif MB(RAMPS_14_RE_ARM_EFB)
- #include "pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
#elif MB(RAMPS_14_RE_ARM_EEB)
- #include "pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
#elif MB(RAMPS_14_RE_ARM_EFF)
- #include "pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
#elif MB(RAMPS_14_RE_ARM_EEF)
- #include "pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
#elif MB(RAMPS_14_RE_ARM_SF)
- #include "pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_RAMPS_RE_ARM.h" // LPC1768 env:LPC1768
#elif MB(MKS_SBASE)
- #include "pins_MKS_SBASE.h" // LPC1768 env:LPC1768
-#elif MB(MKS_SGEN)
- #include "pins_MKS_SGEN.h" // LPC1769 env:LPC1769
+ #include "lpc1768/pins_MKS_SBASE.h" // LPC1768 env:LPC1768
#elif MB(MKS_SGEN_L)
- #include "pins_MKS_SGEN_L.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_MKS_SGEN_L.h" // LPC1768 env:LPC1768
#elif MB(AZSMZ_MINI)
- #include "pins_AZSMZ_MINI.h" // LPC1768 env:LPC1768
-#elif MB(AZTEEG_X5_GT)
- #include "pins_AZTEEG_X5_GT.h" // LPC1769 env:LPC1769
-#elif MB(AZTEEG_X5_MINI)
- #include "pins_AZTEEG_X5_MINI.h" // LPC1769 env:LPC1769
-#elif MB(AZTEEG_X5_MINI_WIFI)
- #include "pins_AZTEEG_X5_MINI_WIFI.h" // LPC1769 env:LPC1769
+ #include "lpc1768/pins_AZSMZ_MINI.h" // LPC1768 env:LPC1768
#elif MB(BIQU_BQ111_A4)
- #include "pins_BIQU_BQ111_A4.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_BIQU_BQ111_A4.h" // LPC1768 env:LPC1768
#elif MB(SELENA_COMPACT)
- #include "pins_SELENA_COMPACT.h" // LPC1768 env:LPC1768
-#elif MB(COHESION3D_REMIX)
- #include "pins_COHESION3D_REMIX.h" // LPC1769 env:LPC1769
-#elif MB(COHESION3D_MINI)
- #include "pins_COHESION3D_MINI.h" // LPC1769 env:LPC1769
-#elif MB(SMOOTHIEBOARD)
- #include "pins_SMOOTHIEBOARD.h" // LPC1769 env:LPC1769
+ #include "lpc1768/pins_SELENA_COMPACT.h" // LPC1768 env:LPC1768
#elif MB(BIGTREE_SKR_V1_1)
- #include "pins_BIGTREE_SKR_V1.1.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_BIGTREE_SKR_V1.1.h" // LPC1768 env:LPC1768
#elif MB(BIQU_B300_V1_0)
- #include "pins_BIQU_B300_V1.0.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_BIQU_B300_V1.0.h" // LPC1768 env:LPC1768
#elif MB(BIGTREE_SKR_V1_3)
- #include "pins_BIGTREE_SKR_V1.3.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_BIGTREE_SKR_V1.3.h" // LPC1768 env:LPC1768
#elif MB(TH3D_EZBOARD)
- #include "pins_TH3D_EZBOARD.h" // LPC1768 env:LPC1768
+ #include "lpc1768/pins_TH3D_EZBOARD.h" // LPC1768 env:LPC1768
+#elif MB(GMARSH_X6_REV1)
+ #include "lpc1768/pins_GMARSH_X6_REV1.h" // LPC1768 env:LPC1768
//
-// Other 32-bit Boards
+// LPC1769 ARM Cortex M3
+//
+
+#elif MB(MKS_SGEN)
+ #include "lpc1769/pins_MKS_SGEN.h" // LPC1769 env:LPC1769
+#elif MB(AZTEEG_X5_GT)
+ #include "lpc1769/pins_AZTEEG_X5_GT.h" // LPC1769 env:LPC1769
+#elif MB(AZTEEG_X5_MINI)
+ #include "lpc1769/pins_AZTEEG_X5_MINI.h" // LPC1769 env:LPC1769
+#elif MB(AZTEEG_X5_MINI_WIFI)
+ #include "lpc1769/pins_AZTEEG_X5_MINI_WIFI.h" // LPC1769 env:LPC1769
+#elif MB(COHESION3D_REMIX)
+ #include "lpc1769/pins_COHESION3D_REMIX.h" // LPC1769 env:LPC1769
+#elif MB(COHESION3D_MINI)
+ #include "lpc1769/pins_COHESION3D_MINI.h" // LPC1769 env:LPC1769
+#elif MB(SMOOTHIEBOARD)
+ #include "lpc1769/pins_SMOOTHIEBOARD.h" // LPC1769 env:LPC1769
+
+//
+// Due (ATSAM) boards
//
#elif MB(DUE3DOM)
- #include "pins_DUE3DOM.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_DUE3DOM.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(DUE3DOM_MINI)
- #include "pins_DUE3DOM_MINI.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_DUE3DOM_MINI.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RADDS)
- #include "pins_RADDS.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RADDS.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RURAMPS4D_11)
- #include "pins_RURAMPS4D_11.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RURAMPS4D_11.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RURAMPS4D_13)
- #include "pins_RURAMPS4D_13.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RURAMPS4D_13.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_FD_V1)
- #include "pins_RAMPS_FD_V1.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_FD_V1.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_FD_V2)
- #include "pins_RAMPS_FD_V2.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_FD_V2.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_SMART_EFB)
- #include "pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_SMART_EEB)
- #include "pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_SMART_EFF)
- #include "pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_SMART_EEF)
- #include "pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_SMART_SF)
- #include "pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_SMART.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_DUO_EFB)
- #include "pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_DUO_EEB)
- #include "pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_DUO_EFF)
- #include "pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_DUO_EEF)
- #include "pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS_DUO_SF)
- #include "pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS_DUO.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS4DUE_EFB)
- #include "pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS4DUE_EEB)
- #include "pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS4DUE_EFF)
- #include "pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS4DUE_EEF)
- #include "pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(RAMPS4DUE_SF)
- #include "pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
+ #include "sam/pins_RAMPS4DUE.h" // SAM3X8E env:DUE env:DUE_USB env:DUE_debug
#elif MB(ULTRATRONICS_PRO)
- #include "pins_ULTRATRONICS_PRO.h" // SAM3X8E env:DUE env:DUE_debug
+ #include "sam/pins_ULTRATRONICS_PRO.h" // SAM3X8E env:DUE env:DUE_debug
#elif MB(ARCHIM1)
- #include "pins_ARCHIM1.h" // SAM3X8E env:DUE env:DUE_debug
+ #include "sam/pins_ARCHIM1.h" // SAM3X8E env:DUE env:DUE_debug
#elif MB(ARCHIM2)
- #include "pins_ARCHIM2.h" // SAM3X8E env:DUE env:DUE_debug
+ #include "sam/pins_ARCHIM2.h" // SAM3X8E env:DUE env:DUE_debug
#elif MB(ALLIGATOR)
- #include "pins_ALLIGATOR_R2.h" // SAM3X8E env:DUE env:DUE_debug
+ #include "sam/pins_ALLIGATOR_R2.h" // SAM3X8E env:DUE env:DUE_debug
#elif MB(ADSK)
- #include "pins_ADSK.h" // SAM3X8E env:DUE env:DUE_debug
+ #include "sam/pins_ADSK.h" // SAM3X8E env:DUE env:DUE_debug
#elif MB(PRINTRBOARD_G2)
- #include "pins_PRINTRBOARD_G2.h" // SAM3X8C env:DUE_USB
+ #include "sam/pins_PRINTRBOARD_G2.h" // SAM3X8C env:DUE_USB
//
// STM32 ARM Cortex-M3
//
#elif MB(STM32F1R)
- #include "pins_STM32F1R.h" // STM32F1 env:STM32F1
+ #include "stm32/pins_STM32F1R.h" // STM32F1 env:STM32F1
#elif MB(STM3R_MINI)
- #include "pins_STM3R_MINI.h" // STM32F1 env:STM32F1
+ #include "stm32/pins_STM3R_MINI.h" // STM32F1 env:STM32F1
#elif MB(BIGTREE_SKR_MINI_V1_1)
- #include "pins_BIGTREE_SKR_MINI_V1_1.h" // STM32F1 env:BIGTREE_SKR_MINI
+ #include "stm32/pins_BIGTREE_SKR_MINI_V1_1.h" // STM32F1 env:BIGTREE_SKR_MINI
#elif MB(BIGTREE_SKR_MINI_E3)
- #include "pins_BIGTREE_SKR_MINI_E3.h" // STM32F1 env:BIGTREE_SKR_MINI
+ #include "stm32/pins_BIGTREE_SKR_MINI_E3.h" // STM32F1 env:BIGTREE_SKR_MINI
#elif MB(MALYAN_M200)
- #include "pins_MALYAN_M200.h" // STM32F1 env:malyanm200
+ #include "stm32/pins_MALYAN_M200.h" // STM32F1 env:malyanm200
#elif MB(CHITU3D)
- #include "pins_CHITU3D.h" // STM32F1 env:STM32F1
+ #include "stm32/pins_CHITU3D.h" // STM32F1 env:STM32F1
#elif MB(GTM32_PRO_VB)
- #include "pins_GTM32_PRO_VB.h" // STM32F1 env:STM32F1
+ #include "stm32/pins_GTM32_PRO_VB.h" // STM32F1 env:STM32F1
#elif MB(MORPHEUS)
- #include "pins_MORPHEUS.h" // STM32F1 env:STM32F1
+ #include "stm32/pins_MORPHEUS.h" // STM32F1 env:STM32F1
#elif MB(MKS_ROBIN)
- #include "pins_MKS_ROBIN.h" // STM32F1 env:mks_robin
+ #include "stm32/pins_MKS_ROBIN.h" // STM32F1 env:mks_robin
#elif MB(MKS_ROBIN_MINI)
- #include "pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
+ #include "stm32/pins_MKS_ROBIN_MINI.h" // STM32F1 env:mks_robin_mini
#elif MB(MKS_ROBIN_NANO)
- #include "pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano
+ #include "stm32/pins_MKS_ROBIN_NANO.h" // STM32F1 env:mks_robin_nano
#elif MB(JGAURORA_A5S_A1)
- #include "pins_JGAURORA_A5S_A1.h" // STM32F1 env:JGAURORA_A5S_A1
+ #include "stm32/pins_JGAURORA_A5S_A1.h" // STM32F1 env:JGAURORA_A5S_A1
#elif MB(FYSETC_AIO_II)
- #include "pins_FYSETC_AIO_II.h" // STM32F1 env:fysetc_STM32F1
+ #include "stm32/pins_FYSETC_AIO_II.h" // STM32F1 env:fysetc_STM32F1
#elif MB(FYSETC_CHEETAH)
- #include "pins_FYSETC_CHEETAH.h" // STM32F1 env:fysetc_STM32F1
+ #include "stm32/pins_FYSETC_CHEETAH.h" // STM32F1 env:fysetc_STM32F1
+
+//
+// ARM Cortex-M4F
+//
+
+#elif MB(TEENSY31_32)
+ #include "teensy3/pins_TEENSY31_32.h" // TEENSY31_32 env:teensy31
+#elif MB(TEENSY35_36)
+ #include "teensy3/pins_TEENSY35_36.h" // TEENSY35_36 env:teensy35
//
// STM32 ARM Cortex-M4F
//
-#elif MB(TEENSY31_32)
- #include "pins_TEENSY31_32.h" // TEENSY31_32 env:teensy31
-#elif MB(TEENSY35_36)
- #include "pins_TEENSY35_36.h" // TEENSY35_36 env:teensy35
#elif MB(BEAST)
- #include "pins_BEAST.h" // STM32F4 env:STM32F4
+ #include "stm32/pins_BEAST.h" // STM32F4 env:STM32F4
#elif MB(STM32F4)
- #include "pins_STM32F4.h" // STM32F4 env:STM32F4
+ #include "stm32/pins_STM32F4.h" // STM32F4 env:STM32F4
#elif MB(ARMED)
- #include "pins_ARMED.h" // STM32F4 env:ARMED
+ #include "stm32/pins_ARMED.h" // STM32F4 env:ARMED
#elif MB(RUMBA32)
- #include "pins_RUMBA32.h" // STM32F4 env:RUMBA32
+ #include "stm32/pins_RUMBA32.h" // STM32F4 env:RUMBA32
#elif MB(BLACK_STM32F407VE)
- #include "pins_BLACK_STM32F407VE.h" // STM32F4 env:black_stm32f407ve
+ #include "stm32/pins_BLACK_STM32F407VE.h" // STM32F4 env:black_stm32f407ve
#elif MB(STEVAL)
- #include "pins_STEVAL.h" // STM32F4 env:STM32F4
+ #include "stm32/pins_STEVAL.h" // STM32F4 env:STM32F4
#elif MB(BIGTREE_SKR_PRO_V1_1)
- #include "pins_BIGTREE_SKR_PRO_V1.1.h" // STM32F4 env:BIGTREE_SKR_PRO
+ #include "stm32/pins_BIGTREE_SKR_PRO_V1.1.h" // STM32F4 env:BIGTREE_SKR_PRO
//
// ARM Cortex M7
//
#elif MB(THE_BORG)
- #include "pins_THE_BORG.h" // STM32F7 env:STM32F7
+ #include "stm32/pins_THE_BORG.h" // STM32F7 env:STM32F7
#elif MB(REMRAM_V1)
- #include "pins_REMRAM_V1.h" // STM32F7 env:STM32F7xx
+ #include "stm32/pins_REMRAM_V1.h" // STM32F7 env:STM32F7xx
//
// Espressif ESP32
//
#elif MB(ESP32)
- #include "pins_ESP32.h" // ESP32 env:esp32
+ #include "esp32/pins_ESP32.h" // ESP32 env:esp32
//
// Linux Native Debug board
//
#elif MB(LINUX_RAMPS)
- #include "pins_RAMPS_LINUX.h" // Linux env:linux_native
+ #include "linux/pins_RAMPS_LINUX.h" // Linux env:linux_native
#else
#error "Unknown MOTHERBOARD value set in Configuration.h"
@@ -947,6 +968,14 @@
#ifndef X2_MS3_PIN
#define X2_MS3_PIN _EPIN(E_STEPPERS, MS3)
#endif
+ #if AXIS_DRIVER_TYPE_X2(TMC2208) || AXIS_DRIVER_TYPE_X2(TMC2209)
+ #ifndef X2_SERIAL_TX_PIN
+ #define X2_SERIAL_TX_PIN _EPIN(E_STEPPERS, SERIAL_TX)
+ #endif
+ #ifndef X2_SERIAL_RX_PIN
+ #define X2_SERIAL_RX_PIN _EPIN(E_STEPPERS, SERIAL_RX)
+ #endif
+ #endif
#define Y2_E_INDEX INCREMENT(E_STEPPERS)
#else
#define Y2_E_INDEX E_STEPPERS
@@ -974,6 +1003,14 @@
#ifndef Y2_MS3_PIN
#define Y2_MS3_PIN _EPIN(Y2_E_INDEX, MS3)
#endif
+ #if AXIS_DRIVER_TYPE_Y2(TMC2208) || AXIS_DRIVER_TYPE_Y2(TMC2209)
+ #ifndef Y2_SERIAL_TX_PIN
+ #define Y2_SERIAL_TX_PIN _EPIN(Y2_E_INDEX, SERIAL_TX)
+ #endif
+ #ifndef Y2_SERIAL_RX_PIN
+ #define Y2_SERIAL_RX_PIN _EPIN(Y2_E_INDEX, SERIAL_RX)
+ #endif
+ #endif
#define Z2_E_INDEX INCREMENT(Y2_E_INDEX)
#else
#define Z2_E_INDEX Y2_E_INDEX
@@ -1001,6 +1038,14 @@
#ifndef Z2_MS3_PIN
#define Z2_MS3_PIN _EPIN(Z2_E_INDEX, MS3)
#endif
+ #if AXIS_DRIVER_TYPE_Z2(TMC2208) || AXIS_DRIVER_TYPE_Z2(TMC2209)
+ #ifndef Z2_SERIAL_TX_PIN
+ #define Z2_SERIAL_TX_PIN _EPIN(Z2_E_INDEX, SERIAL_TX)
+ #endif
+ #ifndef Z2_SERIAL_RX_PIN
+ #define Z2_SERIAL_RX_PIN _EPIN(Z2_E_INDEX, SERIAL_RX)
+ #endif
+ #endif
#define Z3_E_INDEX INCREMENT(Z2_E_INDEX)
#else
#define Z3_E_INDEX Z2_E_INDEX
@@ -1027,4 +1072,14 @@
#ifndef Z3_MS3_PIN
#define Z3_MS3_PIN _EPIN(Z3_E_INDEX, MS3)
#endif
+ #if AXIS_DRIVER_TYPE_Z3(TMC2208) || AXIS_DRIVER_TYPE_Z3(TMC2209)
+ #ifndef Z3_SERIAL_TX_PIN
+ #define Z3_SERIAL_TX_PIN _EPIN(Z3_E_INDEX, SERIAL_TX)
+ #endif
+ #ifndef Z3_SERIAL_RX_PIN
+ #define Z3_SERIAL_RX_PIN _EPIN(Z3_E_INDEX, SERIAL_RX)
+ #endif
+ #endif
#endif
+
+#undef HAS_FREE_AUX2_PINS
diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h
index e1f6b15734..61f05c11b8 100644
--- a/Marlin/src/pins/pinsDebug.h
+++ b/Marlin/src/pins/pinsDebug.h
@@ -17,6 +17,8 @@
*
*/
+#include "../inc/MarlinConfig.h"
+
#define MAX_NAME_LENGTH 39 // one place to specify the format of all the sources of names
// "-" left justify, "39" minimum width of name, pad with blanks
@@ -40,7 +42,7 @@
#define REPORT_NAME_ANALOG(COUNTER, NAME) _ADD_PIN(#NAME, COUNTER)
#include "pinsDebug_list.h"
-#line 47
+#line 46
// manually add pins that have names that are macros which don't play well with these macros
#if SERIAL_PORT == 0 && (AVR_ATmega2560_FAMILY || AVR_ATmega1284_FAMILY || defined(ARDUINO_ARCH_SAM))
@@ -92,11 +94,10 @@ const PinInfo pin_array[] PROGMEM = {
#endif
#include "pinsDebug_list.h"
- #line 99
+ #line 98
};
-
#include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU
#ifndef M43_NEVER_TOUCH
diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h
index cf6dcc098f..26968ed007 100644
--- a/Marlin/src/pins/pinsDebug_list.h
+++ b/Marlin/src/pins/pinsDebug_list.h
@@ -24,7 +24,7 @@
// Pin lists 1.1.x and 2.0.x synchronized 2018-02-17
-#line 31 // set __LINE__ to a known value for both passes
+#line 28 // set __LINE__ to a known value for both passes
//
// Analog Pin Assignments
diff --git a/Marlin/src/pins/pins_EINSY_RAMBO.h b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
similarity index 97%
rename from Marlin/src/pins/pins_EINSY_RAMBO.h
rename to Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
index c40bc079cb..56a597ffc3 100644
--- a/Marlin/src/pins/pins_EINSY_RAMBO.h
+++ b/Marlin/src/pins/rambo/pins_EINSY_RAMBO.h
@@ -135,8 +135,8 @@
// 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_ENA_PIN 18 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 18 // Pullup!
#define SPINDLE_DIR_PIN 19
//
diff --git a/Marlin/src/pins/pins_EINSY_RETRO.h b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h
similarity index 97%
rename from Marlin/src/pins/pins_EINSY_RETRO.h
rename to Marlin/src/pins/rambo/pins_EINSY_RETRO.h
index 2206191474..675f5e3de0 100644
--- a/Marlin/src/pins/pins_EINSY_RETRO.h
+++ b/Marlin/src/pins/rambo/pins_EINSY_RETRO.h
@@ -149,8 +149,8 @@
// 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_ENA_PIN 18 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 18 // Pullup!
#define SPINDLE_DIR_PIN 19
//
diff --git a/Marlin/src/pins/pins_MINIRAMBO.h b/Marlin/src/pins/rambo/pins_MINIRAMBO.h
similarity index 97%
rename from Marlin/src/pins/pins_MINIRAMBO.h
rename to Marlin/src/pins/rambo/pins_MINIRAMBO.h
index f81627b655..da4f77f7dd 100644
--- a/Marlin/src/pins/pins_MINIRAMBO.h
+++ b/Marlin/src/pins/rambo/pins_MINIRAMBO.h
@@ -125,8 +125,8 @@
// 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_ENA_PIN 18 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 18 // Pullup!
#define SPINDLE_DIR_PIN 19
//
diff --git a/Marlin/src/pins/pins_RAMBO.h b/Marlin/src/pins/rambo/pins_RAMBO.h
similarity index 97%
rename from Marlin/src/pins/pins_RAMBO.h
rename to Marlin/src/pins/rambo/pins_RAMBO.h
index 1eb29a66a4..10a6a1b5b9 100644
--- a/Marlin/src/pins/pins_RAMBO.h
+++ b/Marlin/src/pins/rambo/pins_RAMBO.h
@@ -149,8 +149,8 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 45 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 31 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 31 // Pullup!
#define SPINDLE_DIR_PIN 32
//
diff --git a/Marlin/src/pins/pins_SCOOVO_X9H.h b/Marlin/src/pins/rambo/pins_SCOOVO_X9H.h
similarity index 100%
rename from Marlin/src/pins/pins_SCOOVO_X9H.h
rename to Marlin/src/pins/rambo/pins_SCOOVO_X9H.h
diff --git a/Marlin/src/pins/pins_3DRAG.h b/Marlin/src/pins/ramps/pins_3DRAG.h
similarity index 91%
rename from Marlin/src/pins/pins_3DRAG.h
rename to Marlin/src/pins/ramps/pins_3DRAG.h
index a7e686eef0..eae958da69 100644
--- a/Marlin/src/pins/pins_3DRAG.h
+++ b/Marlin/src/pins/ramps/pins_3DRAG.h
@@ -30,7 +30,7 @@
#endif
#ifndef DEFAULT_MACHINE_NAME
- #define DEFAULT_MACHINE_NAME "3Drag"
+ #define DEFAULT_MACHINE_NAME BOARD_NAME
#endif
#ifndef DEFAULT_SOURCE_CODE_URL
@@ -44,7 +44,7 @@
#define RAMPS_D9_PIN 8
#define MOSFET_D_PIN 12
-#define CASE_LIGHT_PIN -1 // MUST BE HARDWARE PWM but one is not available on expansion header
+#define CASE_LIGHT_PIN -1 // Hardware PWM but one is not available on expansion header
#include "pins_RAMPS.h"
@@ -152,11 +152,11 @@
#define Z_DIR_PIN 28
#define Z_ENABLE_PIN 24
#define Z_STEP_PIN 26
- #define SPINDLE_LASER_PWM_PIN 46 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 62 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 46 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 62 // Pullup!
#define SPINDLE_DIR_PIN 48
#elif !BOTH(ULTRA_LCD, NEWPANEL) // use expansion header if no LCD in use
- #define SPINDLE_LASER_ENA_PIN 16 // Pin should have a pullup/pulldown!
+ #define SPINDLE_LASER_ENA_PIN 16 // Pullup or pulldown!
#define SPINDLE_DIR_PIN 17
#endif
#endif
diff --git a/Marlin/src/pins/pins_AZTEEG_X3.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h
similarity index 94%
rename from Marlin/src/pins/pins_AZTEEG_X3.h
rename to Marlin/src/pins/ramps/pins_AZTEEG_X3.h
index 4686d9e726..866aec0af7 100644
--- a/Marlin/src/pins/pins_AZTEEG_X3.h
+++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3.h
@@ -92,7 +92,7 @@
#undef SERVO0_PIN
#define SERVO0_PIN 11
#endif
- #define SPINDLE_LASER_PWM_PIN 7 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 20 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 7 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 20 // Pullup!
#define SPINDLE_DIR_PIN 21
#endif
diff --git a/Marlin/src/pins/pins_AZTEEG_X3_PRO.h b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h
similarity index 94%
rename from Marlin/src/pins/pins_AZTEEG_X3_PRO.h
rename to Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h
index 25282f1eef..777c748dd2 100644
--- a/Marlin/src/pins/pins_AZTEEG_X3_PRO.h
+++ b/Marlin/src/pins/ramps/pins_AZTEEG_X3_PRO.h
@@ -160,10 +160,9 @@
#if HAS_CUTTER // EXP2 header
#if ANY(VIKI2, miniVIKI)
- #undef BTN_EN2
- #define BTN_EN2 31 // need 7 for the spindle speed PWM
+ #define BTN_EN2 31 // Pin 7 needed for Spindle PWM
#endif
- #define SPINDLE_LASER_PWM_PIN 7 // must have a hardware PWM
- #define SPINDLE_LASER_ENA_PIN 20 // Pin should have a pullup!
- #define SPINDLE_DIR_PIN 21
+ #define SPINDLE_LASER_PWM_PIN 7 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 20 // Pullup!
+ #define SPINDLE_DIR_PIN 21
#endif
diff --git a/Marlin/src/pins/pins_BAM_DICE_DUE.h b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h
similarity index 90%
rename from Marlin/src/pins/pins_BAM_DICE_DUE.h
rename to Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h
index 7872d66b31..74a69fb8c4 100644
--- a/Marlin/src/pins/pins_BAM_DICE_DUE.h
+++ b/Marlin/src/pins/ramps/pins_BAM_DICE_DUE.h
@@ -34,9 +34,9 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 66 // Pin should have a pullup/pulldown!
+#define SPINDLE_LASER_ENA_PIN 66 // Pullup or pulldown!
#define SPINDLE_DIR_PIN 67
-#define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#include "pins_RAMPS.h"
diff --git a/Marlin/src/pins/pins_BIQU_KFB_2.h b/Marlin/src/pins/ramps/pins_BIQU_KFB_2.h
similarity index 100%
rename from Marlin/src/pins/pins_BIQU_KFB_2.h
rename to Marlin/src/pins/ramps/pins_BIQU_KFB_2.h
diff --git a/Marlin/src/pins/pins_BQ_ZUM_MEGA_3D.h b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h
similarity index 93%
rename from Marlin/src/pins/pins_BQ_ZUM_MEGA_3D.h
rename to Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h
index 9290e6c3b1..5a49c0a3b6 100644
--- a/Marlin/src/pins/pins_BQ_ZUM_MEGA_3D.h
+++ b/Marlin/src/pins/ramps/pins_BQ_ZUM_MEGA_3D.h
@@ -50,8 +50,8 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup/pulldown!
-#define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown!
+#define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#define SPINDLE_DIR_PIN 42
//
@@ -94,7 +94,7 @@
#undef PS_ON_PIN // 12
#define PS_ON_PIN 81 // External Power Supply
-#define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
+#define CASE_LIGHT_PIN 44 // Hardware PWM
// This board has headers for Z-min, Z-max and IND_S_5V *but* as the bq team
diff --git a/Marlin/src/pins/pins_DUPLICATOR_I3_PLUS.h b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h
similarity index 99%
rename from Marlin/src/pins/pins_DUPLICATOR_I3_PLUS.h
rename to Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h
index 94585715e2..290637eb7b 100644
--- a/Marlin/src/pins/pins_DUPLICATOR_I3_PLUS.h
+++ b/Marlin/src/pins/ramps/pins_DUPLICATOR_I3_PLUS.h
@@ -29,7 +29,7 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
-#define BOARD_NAME "Duplicator i3 Plus"
+#define BOARD_NAME "Duplicator i3 Plus"
//
// Limit Switches
diff --git a/Marlin/src/pins/pins_FELIX2.h b/Marlin/src/pins/ramps/pins_FELIX2.h
similarity index 100%
rename from Marlin/src/pins/pins_FELIX2.h
rename to Marlin/src/pins/ramps/pins_FELIX2.h
diff --git a/Marlin/src/pins/pins_FORMBOT_RAPTOR.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h
similarity index 90%
rename from Marlin/src/pins/pins_FORMBOT_RAPTOR.h
rename to Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h
index 1c121cc3f4..435e9ad051 100644
--- a/Marlin/src/pins/pins_FORMBOT_RAPTOR.h
+++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR.h
@@ -33,12 +33,8 @@
#error "Formbot supports up to 3 hotends / E-steppers. Comment this line to keep going."
#endif
-#ifndef DEFAULT_MACHINE_NAME
- #define DEFAULT_MACHINE_NAME "Formbot Raptor"
-#endif
-#ifndef BOARD_NAME
- #define BOARD_NAME "Formbot Raptor"
-#endif
+#define BOARD_NAME "Formbot Raptor"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
//
// Servos
@@ -117,9 +113,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
diff --git a/Marlin/src/pins/pins_FORMBOT_RAPTOR2.h b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h
similarity index 80%
rename from Marlin/src/pins/pins_FORMBOT_RAPTOR2.h
rename to Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h
index e89167e987..b5c69a06d1 100644
--- a/Marlin/src/pins/pins_FORMBOT_RAPTOR2.h
+++ b/Marlin/src/pins/ramps/pins_FORMBOT_RAPTOR2.h
@@ -25,8 +25,8 @@
* Formbot Raptor 2 pin assignments
*/
-#define DEFAULT_MACHINE_NAME "Formbot Raptor2"
#define BOARD_NAME "Formbot Raptor2"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
#define FAN_PIN 6
@@ -43,21 +43,21 @@
//
#if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA)
#if !NUM_SERVOS // Try to use servo connector first
- #define SPINDLE_LASER_ENA_PIN 6 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_ENA_PIN 6 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM
#define SPINDLE_DIR_PIN 5
#elif !GREEDY_PANEL // Try to use AUX2
- #define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#define SPINDLE_DIR_PIN 65
#endif
#endif
#if ENABLED(CASE_LIGHT_ENABLE) && !PIN_EXISTS(CASE_LIGHT)
#if NUM_SERVOS <= 1 // Try to use servo connector first
- #define CASE_LIGHT_PIN 6 // MUST BE HARDWARE PWM
+ #define CASE_LIGHT_PIN 6 // Hardware PWM
#elif !GREEDY_PANEL // Try to use AUX2
- #define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
+ #define CASE_LIGHT_PIN 44 // Hardware PWM
#endif
#endif
diff --git a/Marlin/src/pins/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
similarity index 93%
rename from Marlin/src/pins/pins_FORMBOT_TREX2PLUS.h
rename to Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
index f1dfd31889..b500cea306 100644
--- a/Marlin/src/pins/pins_FORMBOT_TREX2PLUS.h
+++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
@@ -33,8 +33,8 @@
#error "Formbot supports up to 2 hotends / E-steppers. Comment this line to keep going."
#endif
-#define DEFAULT_MACHINE_NAME "Formbot"
#define BOARD_NAME "Formbot"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
//
// Servos
@@ -114,9 +114,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
diff --git a/Marlin/src/pins/pins_FORMBOT_TREX3.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h
similarity index 89%
rename from Marlin/src/pins/pins_FORMBOT_TREX3.h
rename to Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h
index 4ca2556d80..82977a556b 100644
--- a/Marlin/src/pins/pins_FORMBOT_TREX3.h
+++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX3.h
@@ -33,8 +33,8 @@
#error "Formbot supports up to 2 hotends / E-steppers. Comment this line to keep going."
#endif
-#define DEFAULT_MACHINE_NAME "Formbot"
#define BOARD_NAME "Formbot"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
//
// Servos
@@ -114,9 +114,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
@@ -144,8 +144,8 @@
#define LED_PIN 13
#endif
-#define SPINDLE_LASER_PWM_PIN -1 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 4 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN -1 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 4 // Pullup!
// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector
#define FILWIDTH_PIN 5 // Analog Input
diff --git a/Marlin/src/pins/pins_FYSETC_F6_13.h b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
similarity index 99%
rename from Marlin/src/pins/pins_FYSETC_F6_13.h
rename to Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
index e41cca85cd..be5ff2a305 100644
--- a/Marlin/src/pins/pins_FYSETC_F6_13.h
+++ b/Marlin/src/pins/ramps/pins_FYSETC_F6_13.h
@@ -117,7 +117,7 @@
// the jumper next to the limit switch socket when using sensorless homing.
//
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
// Software serial
// At the moment, F6 rx pins are not pc interrupt pins
#define X_SERIAL_RX_PIN -1 // 71
diff --git a/Marlin/src/pins/pins_K8200.h b/Marlin/src/pins/ramps/pins_K8200.h
similarity index 100%
rename from Marlin/src/pins/pins_K8200.h
rename to Marlin/src/pins/ramps/pins_K8200.h
diff --git a/Marlin/src/pins/pins_K8400.h b/Marlin/src/pins/ramps/pins_K8400.h
similarity index 100%
rename from Marlin/src/pins/pins_K8400.h
rename to Marlin/src/pins/ramps/pins_K8400.h
index c3dd647d64..908b6e61e0 100644
--- a/Marlin/src/pins/pins_K8400.h
+++ b/Marlin/src/pins/ramps/pins_K8400.h
@@ -32,8 +32,8 @@
* - Second heater has moved pin
*/
-#define DEFAULT_MACHINE_NAME "Vertex"
#define BOARD_NAME "K8400"
+#define DEFAULT_MACHINE_NAME "Vertex"
#include "pins_3DRAG.h"
diff --git a/Marlin/src/pins/pins_K8800.h b/Marlin/src/pins/ramps/pins_K8800.h
similarity index 100%
rename from Marlin/src/pins/pins_K8800.h
rename to Marlin/src/pins/ramps/pins_K8800.h
index 98fcde5bcd..22b5081db4 100644
--- a/Marlin/src/pins/pins_K8800.h
+++ b/Marlin/src/pins/ramps/pins_K8800.h
@@ -29,8 +29,8 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
-#define DEFAULT_MACHINE_NAME "Vertex Delta"
#define BOARD_NAME "K8800"
+#define DEFAULT_MACHINE_NAME "Vertex Delta"
//#define LCD_SCREEN_ROT_180
diff --git a/Marlin/src/pins/pins_MAKEBOARD_MINI.h b/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h
similarity index 86%
rename from Marlin/src/pins/pins_MAKEBOARD_MINI.h
rename to Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h
index 30807d2a18..03f6ca0396 100644
--- a/Marlin/src/pins/pins_MAKEBOARD_MINI.h
+++ b/Marlin/src/pins/ramps/pins_MAKEBOARD_MINI.h
@@ -21,20 +21,13 @@
*/
#pragma once
-#include "pins_RAMPS.h"
-
-#undef BOARD_NAME
-#define BOARD_NAME "MAKEBOARD_MINI"
+#define BOARD_NAME "MAKEboard Mini"
//
// Only 3 Limit Switch plugs on Micromake C1
//
-#undef X_MIN_PIN
-#undef Y_MIN_PIN
-#undef Z_MIN_PIN
-#undef X_MAX_PIN
-#undef Y_MAX_PIN
-#undef Z_MAX_PIN
#define X_STOP_PIN 2
#define Y_STOP_PIN 15
#define Z_STOP_PIN 19
+
+#include "pins_RAMPS.h"
diff --git a/Marlin/src/pins/pins_MKS_BASE.h b/Marlin/src/pins/ramps/pins_MKS_BASE.h
similarity index 91%
rename from Marlin/src/pins/pins_MKS_BASE.h
rename to Marlin/src/pins/ramps/pins_MKS_BASE.h
index 07519a5696..9ec23c1a80 100644
--- a/Marlin/src/pins/pins_MKS_BASE.h
+++ b/Marlin/src/pins/ramps/pins_MKS_BASE.h
@@ -44,8 +44,8 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 2 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 15 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 2 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 15 // Pullup!
#define SPINDLE_DIR_PIN 19
#include "pins_RAMPS.h"
diff --git a/Marlin/src/pins/pins_MKS_BASE_14.h b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_BASE_14.h
rename to Marlin/src/pins/ramps/pins_MKS_BASE_14.h
diff --git a/Marlin/src/pins/pins_MKS_BASE_15.h b/Marlin/src/pins/ramps/pins_MKS_BASE_15.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_BASE_15.h
rename to Marlin/src/pins/ramps/pins_MKS_BASE_15.h
diff --git a/Marlin/src/pins/pins_MKS_BASE_HEROIC.h b/Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_BASE_HEROIC.h
rename to Marlin/src/pins/ramps/pins_MKS_BASE_HEROIC.h
diff --git a/Marlin/src/pins/pins_MKS_GEN_13.h b/Marlin/src/pins/ramps/pins_MKS_GEN_13.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_GEN_13.h
rename to Marlin/src/pins/ramps/pins_MKS_GEN_13.h
diff --git a/Marlin/src/pins/pins_MKS_GEN_L.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_GEN_L.h
rename to Marlin/src/pins/ramps/pins_MKS_GEN_L.h
diff --git a/Marlin/src/pins/pins_RAMPS.h b/Marlin/src/pins/ramps/pins_RAMPS.h
similarity index 93%
rename from Marlin/src/pins/pins_RAMPS.h
rename to Marlin/src/pins/ramps/pins_RAMPS.h
index e79247fcef..9853dc7010 100644
--- a/Marlin/src/pins/pins_RAMPS.h
+++ b/Marlin/src/pins/ramps/pins_RAMPS.h
@@ -157,15 +157,21 @@
//
// Temperature Sensors
//
-#define TEMP_0_PIN 13 // Analog Input
-#define TEMP_1_PIN 15 // Analog Input
-#define TEMP_BED_PIN 14 // Analog Input
+#ifndef TEMP_0_PIN
+ #define TEMP_0_PIN 13 // Analog Input
+#endif
+#ifndef TEMP_1_PIN
+ #define TEMP_1_PIN 15 // Analog Input
+#endif
+#ifndef TEMP_BED_PIN
+ #define TEMP_BED_PIN 14 // Analog Input
+#endif
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
@@ -252,13 +258,11 @@
#define PS_ON_PIN 12
#endif
-#define AUX2_PINS_FREE !( BOTH(ULTRA_LCD, NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, MINIPANEL, REPRAPWORLD_KEYPAD) )
-
#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN) && !defined(SPINDLE_LASER_ENA_PIN)
- #if NUM_SERVOS <= 1 // try to use servo connector first
- #define CASE_LIGHT_PIN 6 // MUST BE HARDWARE PWM
- #elif AUX2_PINS_FREE
- #define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
+ #if NUM_SERVOS <= 1 // Prefer the servo connector
+ #define CASE_LIGHT_PIN 6 // Hardware PWM
+ #elif HAS_FREE_AUX2_PINS
+ #define CASE_LIGHT_PIN 44 // Hardware PWM
#endif
#endif
@@ -267,20 +271,18 @@
//
#if HAS_CUTTER && !defined(SPINDLE_LASER_ENA_PIN)
#if !NUM_SERVOS // Use servo connector if possible
- #define SPINDLE_LASER_ENA_PIN 4 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM
#define SPINDLE_DIR_PIN 5
- #elif AUX2_PINS_FREE
- #define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+ #elif HAS_FREE_AUX2_PINS
+ #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#define SPINDLE_DIR_PIN 65
#else
#error "No auto-assignable Spindle/Laser pins available."
#endif
#endif
-#undef AUX2_PINS_FREE
-
//
// TMC software SPI
//
@@ -296,7 +298,7 @@
#endif
#endif
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
/**
* TMC2208/TMC2209 stepper drivers
*
@@ -615,7 +617,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // Buttons are directly attached using AUX-2
+ // Buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define SHIFT_OUT 40
#define SHIFT_CLK 44
diff --git a/Marlin/src/pins/pins_RAMPS_13.h b/Marlin/src/pins/ramps/pins_RAMPS_13.h
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_13.h
rename to Marlin/src/pins/ramps/pins_RAMPS_13.h
diff --git a/Marlin/src/pins/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_CREALITY.h
rename to Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h
diff --git a/Marlin/src/pins/pins_RAMPS_DAGOMA.h b/Marlin/src/pins/ramps/pins_RAMPS_DAGOMA.h
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_DAGOMA.h
rename to Marlin/src/pins/ramps/pins_RAMPS_DAGOMA.h
diff --git a/Marlin/src/pins/pins_RAMPS_ENDER_4.h b/Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
old mode 100755
new mode 100644
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_ENDER_4.h
rename to Marlin/src/pins/ramps/pins_RAMPS_ENDER_4.h
diff --git a/Marlin/src/pins/pins_RAMPS_OLD.h b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h
similarity index 84%
rename from Marlin/src/pins/pins_RAMPS_OLD.h
rename to Marlin/src/pins/ramps/pins_RAMPS_OLD.h
index f0deec3b04..cceeefedbe 100644
--- a/Marlin/src/pins/pins_RAMPS_OLD.h
+++ b/Marlin/src/pins/ramps/pins_RAMPS_OLD.h
@@ -78,9 +78,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 66 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 66 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
@@ -106,11 +106,11 @@
#define SDPOWER 48
#define SDSS 53
#define LED_PIN 13
-#define CASE_LIGHT_PIN 45 // MUST BE HARDWARE PWM
+#define CASE_LIGHT_PIN 45 // Hardware PWM
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 41 // Pin should have a pullup/pulldown!
-#define SPINDLE_LASER_PWM_PIN 45 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENA_PIN 41 // Pullup or pulldown!
+#define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM
#define SPINDLE_DIR_PIN 43
diff --git a/Marlin/src/pins/pins_RAMPS_PLUS.h b/Marlin/src/pins/ramps/pins_RAMPS_PLUS.h
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_PLUS.h
rename to Marlin/src/pins/ramps/pins_RAMPS_PLUS.h
diff --git a/Marlin/src/pins/pins_RIGIDBOARD.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h
similarity index 98%
rename from Marlin/src/pins/pins_RIGIDBOARD.h
rename to Marlin/src/pins/ramps/pins_RIGIDBOARD.h
index 4b472b652d..f4b38d630a 100644
--- a/Marlin/src/pins/pins_RIGIDBOARD.h
+++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD.h
@@ -25,7 +25,9 @@
* RIGIDBOARD Arduino Mega with RAMPS v1.4 pin assignments
*/
-#define BOARD_NAME "RigidBoard"
+#ifndef BOARD_NAME
+ #define BOARD_NAME "RigidBoard"
+#endif
//
// Z Probe (when not Z_MIN_PIN)
diff --git a/Marlin/src/pins/pins_RIGIDBOARD_V2.h b/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h
similarity index 99%
rename from Marlin/src/pins/pins_RIGIDBOARD_V2.h
rename to Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h
index 419726883e..b9ccd45f13 100644
--- a/Marlin/src/pins/pins_RIGIDBOARD_V2.h
+++ b/Marlin/src/pins/ramps/pins_RIGIDBOARD_V2.h
@@ -25,11 +25,10 @@
* RIGIDBOARD V2 Arduino Mega with RAMPS v1.4 pin assignments
*/
-#include "pins_RIGIDBOARD.h"
-
-#undef BOARD_NAME
#define BOARD_NAME "RigidBoard V2"
+#include "pins_RIGIDBOARD.h"
+
//
// Steppers
//
diff --git a/Marlin/src/pins/pins_RL200.h b/Marlin/src/pins/ramps/pins_RL200.h
similarity index 100%
rename from Marlin/src/pins/pins_RL200.h
rename to Marlin/src/pins/ramps/pins_RL200.h
index af03ee8c4a..381b882e96 100644
--- a/Marlin/src/pins/pins_RL200.h
+++ b/Marlin/src/pins/ramps/pins_RL200.h
@@ -26,8 +26,8 @@
* extruder motors due to dual Z motors. Pinout therefore based on pins_RUMBA.h.
*/
-#define DEFAULT_MACHINE_NAME "Rapide Lite 200"
#define BOARD_NAME "RL200"
+#define DEFAULT_MACHINE_NAME "Rapide Lite 200"
#if HOTENDS > 2 || E_STEPPERS > 2
#error "RL200v1 supports up to 2 hotends / E-steppers. Comment out this line to continue."
diff --git a/Marlin/src/pins/pins_RUMBA.h b/Marlin/src/pins/ramps/pins_RUMBA.h
similarity index 96%
rename from Marlin/src/pins/pins_RUMBA.h
rename to Marlin/src/pins/ramps/pins_RUMBA.h
index db3dff3c74..41a0940fc4 100644
--- a/Marlin/src/pins/pins_RUMBA.h
+++ b/Marlin/src/pins/ramps/pins_RUMBA.h
@@ -33,12 +33,12 @@
#error "RUMBA supports up to 3 hotends / E-steppers. Comment out this line to continue."
#endif
-#ifndef DEFAULT_MACHINE_NAME
- #define DEFAULT_MACHINE_NAME "Rumba"
-#endif
#ifndef BOARD_NAME
#define BOARD_NAME "Rumba"
#endif
+#ifndef DEFAULT_MACHINE_NAME
+ #define DEFAULT_MACHINE_NAME BOARD_NAME
+#endif
//
// Servos
@@ -156,10 +156,10 @@
// M3/M4/M5 - Spindle/Laser Control
//
#ifndef SPINDLE_LASER_PWM_PIN
- #define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM. Pin 4 interrupts OC0* and OC1* always in use?
+ #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM. Pin 4 interrupts OC0* and OC1* always in use?
#endif
#ifndef SPINDLE_LASER_ENA_PIN
- #define SPINDLE_LASER_ENA_PIN 14 // Pin should have a pullup!
+ #define SPINDLE_LASER_ENA_PIN 14 // Pullup!
#endif
#ifndef SPINDLE_DIR_PIN
#define SPINDLE_DIR_PIN 15
diff --git a/Marlin/src/pins/pins_RUMBA_RAISE3D.h b/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h
similarity index 100%
rename from Marlin/src/pins/pins_RUMBA_RAISE3D.h
rename to Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h
index 8d5297c1b8..d04695e292 100644
--- a/Marlin/src/pins/pins_RUMBA_RAISE3D.h
+++ b/Marlin/src/pins/ramps/pins_RUMBA_RAISE3D.h
@@ -21,8 +21,8 @@
*/
#pragma once
-#define DEFAULT_MACHINE_NAME "Raise3D N Series"
#define BOARD_NAME "Raise3D Rumba"
+#define DEFAULT_MACHINE_NAME "Raise3D N Series"
// Raise3D uses thermocouples on the standard input pins
#define TEMP_0_PIN 15 // Analog Input
diff --git a/Marlin/src/pins/pins_SAINSMART_2IN1.h b/Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h
similarity index 100%
rename from Marlin/src/pins/pins_SAINSMART_2IN1.h
rename to Marlin/src/pins/ramps/pins_SAINSMART_2IN1.h
diff --git a/Marlin/src/pins/pins_TRIGORILLA_13.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_13.h
similarity index 100%
rename from Marlin/src/pins/pins_TRIGORILLA_13.h
rename to Marlin/src/pins/ramps/pins_TRIGORILLA_13.h
diff --git a/Marlin/src/pins/pins_TRIGORILLA_14.h b/Marlin/src/pins/ramps/pins_TRIGORILLA_14.h
similarity index 100%
rename from Marlin/src/pins/pins_TRIGORILLA_14.h
rename to Marlin/src/pins/ramps/pins_TRIGORILLA_14.h
diff --git a/Marlin/src/pins/pins_TRONXY_V3_1_0.h b/Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h
similarity index 100%
rename from Marlin/src/pins/pins_TRONXY_V3_1_0.h
rename to Marlin/src/pins/ramps/pins_TRONXY_V3_1_0.h
diff --git a/Marlin/src/pins/pins_ULTIMAIN_2.h b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h
similarity index 96%
rename from Marlin/src/pins/pins_ULTIMAIN_2.h
rename to Marlin/src/pins/ramps/pins_ULTIMAIN_2.h
index f61f16c2f4..da1eecbdb1 100644
--- a/Marlin/src/pins/pins_ULTIMAIN_2.h
+++ b/Marlin/src/pins/ramps/pins_ULTIMAIN_2.h
@@ -37,9 +37,9 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
+#define BOARD_NAME "Ultimaker 2.x"
#define DEFAULT_MACHINE_NAME "Ultimaker"
#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin"
-#define BOARD_NAME "Ultimaker 2.x"
//
// Limit Switches
@@ -132,8 +132,8 @@
#if HAS_CUTTER // use the LED_PIN for spindle speed control or case light
#undef LED_PIN
#define SPINDLE_DIR_PIN 16
- #define SPINDLE_LASER_ENA_PIN 17 // Pin should have a pullup!
- #define SPINDLE_LASER_PWM_PIN 8 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_ENA_PIN 17 // Pullup!
+ #define SPINDLE_LASER_PWM_PIN 8 // Hardware PWM
#else
#undef LED_PIN
#define CASE_LIGHT_PIN 8
diff --git a/Marlin/src/pins/pins_ULTIMAKER.h b/Marlin/src/pins/ramps/pins_ULTIMAKER.h
similarity index 95%
rename from Marlin/src/pins/pins_ULTIMAKER.h
rename to Marlin/src/pins/ramps/pins_ULTIMAKER.h
index d895058989..f6239ae163 100644
--- a/Marlin/src/pins/pins_ULTIMAKER.h
+++ b/Marlin/src/pins/ramps/pins_ULTIMAKER.h
@@ -37,9 +37,9 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
-#define DEFAULT_MACHINE_NAME "Ultimaker"
-#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin"
#define BOARD_NAME "Ultimaker"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
+#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin"
//
// Servos
@@ -160,6 +160,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_PWM_PIN 9 // MUST BE HARDWARE PWM
-#define SPINDLE_LASER_ENA_PIN 10 // Pin should have a pullup!
+#define SPINDLE_LASER_PWM_PIN 9 // Hardware PWM
+#define SPINDLE_LASER_ENA_PIN 10 // Pullup!
#define SPINDLE_DIR_PIN 11 // use the EXP3 PWM header
diff --git a/Marlin/src/pins/pins_ULTIMAKER_OLD.h b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h
similarity index 93%
rename from Marlin/src/pins/pins_ULTIMAKER_OLD.h
rename to Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h
index f0c048f5ab..6a25b509e3 100644
--- a/Marlin/src/pins/pins_ULTIMAKER_OLD.h
+++ b/Marlin/src/pins/ramps/pins_ULTIMAKER_OLD.h
@@ -64,9 +64,17 @@
#error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
#endif
+#ifdef BOARD_REV_1_1_TO_1_3
+ #define BOARD_NAME "Ultimaker 1.1-1.3"
+#elif defined(BOARD_REV_1_0)
+ #define BOARD_NAME "Ultimaker 1.0"
+#elif defined(BOARD_REV_1_5)
+ #define BOARD_NAME "Ultimaker 1.5"
+#else
+ #define BOARD_NAME "Ultimaker 1.5.4+"
+#endif
#define DEFAULT_MACHINE_NAME "Ultimaker"
#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin"
-#define BOARD_NAME "Ultimaker <1.5.4"
//
// Limit Switches
@@ -234,13 +242,13 @@
*/
#if EXTRUDERS == 1
#define SPINDLE_DIR_PIN 43
- #define SPINDLE_LASER_PWM_PIN 45 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 41 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 45 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 41 // Pullup!
#elif TEMP_SENSOR_BED == 0 // Can't use E0 so see if HEATER_BED_PIN is available
#undef HEATER_BED_PIN
#define SPINDLE_DIR_PIN 38 // Probably pin 4 on 10 pin connector closest to the E0 socket
- #define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM - Special precautions usually needed.
- #define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup! (Probably pin 6 on the 10-pin
+ #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM - Special precautions usually needed.
+ #define SPINDLE_LASER_ENA_PIN 40 // Pullup! (Probably pin 6 on the 10-pin
// connector closest to the E0 socket)
#endif
#endif
diff --git a/Marlin/src/pins/pins_VORON.h b/Marlin/src/pins/ramps/pins_VORON.h
similarity index 100%
rename from Marlin/src/pins/pins_VORON.h
rename to Marlin/src/pins/ramps/pins_VORON.h
diff --git a/Marlin/src/pins/pins_ZRIB_V20.h b/Marlin/src/pins/ramps/pins_ZRIB_V20.h
similarity index 100%
rename from Marlin/src/pins/pins_ZRIB_V20.h
rename to Marlin/src/pins/ramps/pins_ZRIB_V20.h
diff --git a/Marlin/src/pins/pins_Z_BOLT_X_SERIES.h b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h
similarity index 81%
rename from Marlin/src/pins/pins_Z_BOLT_X_SERIES.h
rename to Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h
index fa25b83ebd..45bad889ff 100644
--- a/Marlin/src/pins/pins_Z_BOLT_X_SERIES.h
+++ b/Marlin/src/pins/ramps/pins_Z_BOLT_X_SERIES.h
@@ -29,20 +29,12 @@
#error "Z-Bolt X Series board supports up to 4 hotends / E-steppers."
#endif
+#if !defined(__AVR_ATmega2560__)
+ #error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
+#endif
+
#define BOARD_NAME "Z-Bolt X Series"
-#if ENABLED(TARGET_LPC1768)
- #error "Oops! Set MOTHERBOARD to an LPC1768-based board when building for LPC1768."
-#elif defined(__STM32F1__)
- #error "Oops! Set MOTHERBOARD to an STM32F1-based board when building for STM32F1."
-#endif
-
-#if NONE(IS_RAMPS_SMART, IS_RAMPS_DUO, IS_RAMPS4DUE, TARGET_LPC1768)
- #if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__)
- #error "Oops! Select 'Arduino/Genuino Mega or Mega 2560' in 'Tools > Board.'"
- #endif
-#endif
-
//
// Servos
//
@@ -165,13 +157,11 @@
#define PS_ON_PIN 12
#endif
-#define AUX2_PINS_FREE !( BOTH(ULTRA_LCD, NEWPANEL) && ANY(PANEL_ONE, VIKI2, miniVIKI, MINIPANEL, REPRAPWORLD_KEYPAD) )
-
#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN) && !defined(SPINDLE_LASER_ENA_PIN)
- #if NUM_SERVOS <= 1 // try to use servo connector first
- #define CASE_LIGHT_PIN 6 // MUST BE HARDWARE PWM
- #elif AUX2_PINS_FREE
- #define CASE_LIGHT_PIN 44 // MUST BE HARDWARE PWM
+ #if NUM_SERVOS <= 1 // Prefer the servo connector
+ #define CASE_LIGHT_PIN 6 // Hardware PWM
+ #elif HAS_FREE_AUX2_PINS
+ #define CASE_LIGHT_PIN 44 // Hardware PWM
#endif
#endif
@@ -179,19 +169,17 @@
// M3/M4/M5 - Spindle/Laser Control
//
#if HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA)
- #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first
- #define SPINDLE_LASER_ENA_PIN 4 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 6 // MUST BE HARDWARE PWM
+ #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Prefer the servo connector
+ #define SPINDLE_LASER_ENA_PIN 4 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 6 // Hardware PWM
#define SPINDLE_DIR_PIN 5
- #elif AUX2_PINS_FREE
- #define SPINDLE_LASER_ENA_PIN 40 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 44 // MUST BE HARDWARE PWM
+ #elif HAS_FREE_AUX2_PINS
+ #define SPINDLE_LASER_ENA_PIN 40 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 44 // Hardware PWM
#define SPINDLE_DIR_PIN 65
#endif
#endif
-#undef AUX2_PINS_FREE
-
//
// TMC software SPI
//
diff --git a/Marlin/src/pins/pins_ADSK.h b/Marlin/src/pins/sam/pins_ADSK.h
similarity index 100%
rename from Marlin/src/pins/pins_ADSK.h
rename to Marlin/src/pins/sam/pins_ADSK.h
diff --git a/Marlin/src/pins/pins_ALLIGATOR_R2.h b/Marlin/src/pins/sam/pins_ALLIGATOR_R2.h
similarity index 100%
rename from Marlin/src/pins/pins_ALLIGATOR_R2.h
rename to Marlin/src/pins/sam/pins_ALLIGATOR_R2.h
diff --git a/Marlin/src/pins/pins_ARCHIM1.h b/Marlin/src/pins/sam/pins_ARCHIM1.h
similarity index 100%
rename from Marlin/src/pins/pins_ARCHIM1.h
rename to Marlin/src/pins/sam/pins_ARCHIM1.h
diff --git a/Marlin/src/pins/pins_ARCHIM2.h b/Marlin/src/pins/sam/pins_ARCHIM2.h
similarity index 100%
rename from Marlin/src/pins/pins_ARCHIM2.h
rename to Marlin/src/pins/sam/pins_ARCHIM2.h
diff --git a/Marlin/src/pins/pins_DUE3DOM.h b/Marlin/src/pins/sam/pins_DUE3DOM.h
similarity index 100%
rename from Marlin/src/pins/pins_DUE3DOM.h
rename to Marlin/src/pins/sam/pins_DUE3DOM.h
diff --git a/Marlin/src/pins/pins_DUE3DOM_MINI.h b/Marlin/src/pins/sam/pins_DUE3DOM_MINI.h
similarity index 100%
rename from Marlin/src/pins/pins_DUE3DOM_MINI.h
rename to Marlin/src/pins/sam/pins_DUE3DOM_MINI.h
diff --git a/Marlin/src/pins/pins_PRINTRBOARD_G2.h b/Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h
similarity index 100%
rename from Marlin/src/pins/pins_PRINTRBOARD_G2.h
rename to Marlin/src/pins/sam/pins_PRINTRBOARD_G2.h
diff --git a/Marlin/src/pins/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h
similarity index 99%
rename from Marlin/src/pins/pins_RADDS.h
rename to Marlin/src/pins/sam/pins_RADDS.h
index 66b06c2c43..52c6388268 100644
--- a/Marlin/src/pins/pins_RADDS.h
+++ b/Marlin/src/pins/sam/pins_RADDS.h
@@ -201,9 +201,8 @@
#define FIL_RUNOUT_PIN 39 // SERVO2_PIN
#endif
-// I2C EEPROM with 8K of space
#define I2C_EEPROM
-#define E2END 0x1FFF
+#define E2END 0x1FFF // 8KB
//
// LCD / Controller
diff --git a/Marlin/src/pins/pins_RAMPS4DUE.h b/Marlin/src/pins/sam/pins_RAMPS4DUE.h
similarity index 95%
rename from Marlin/src/pins/pins_RAMPS4DUE.h
rename to Marlin/src/pins/sam/pins_RAMPS4DUE.h
index a4ed62bb07..c36ed150e4 100644
--- a/Marlin/src/pins/pins_RAMPS4DUE.h
+++ b/Marlin/src/pins/sam/pins_RAMPS4DUE.h
@@ -44,18 +44,13 @@
#endif
#define BOARD_NAME "RAMPS4DUE"
-
#define IS_RAMPS4DUE
-#include "pins_RAMPS.h"
//
// Temperature Sensors
//
-#undef TEMP_0_PIN
#define TEMP_0_PIN 9 // Analog Input
-
-#undef TEMP_1_PIN
#define TEMP_1_PIN -1 // Analog Input
-
-#undef TEMP_BED_PIN
#define TEMP_BED_PIN 10 // Analog Input
+
+#include "../ramps/pins_RAMPS.h"
diff --git a/Marlin/src/pins/pins_RAMPS_DUO.h b/Marlin/src/pins/sam/pins_RAMPS_DUO.h
similarity index 91%
rename from Marlin/src/pins/pins_RAMPS_DUO.h
rename to Marlin/src/pins/sam/pins_RAMPS_DUO.h
index 95a4daa5bc..bfee7c753a 100644
--- a/Marlin/src/pins/pins_RAMPS_DUO.h
+++ b/Marlin/src/pins/sam/pins_RAMPS_DUO.h
@@ -67,9 +67,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#undef MAX6675_SS_PIN
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 69 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 69 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 69 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 69 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
diff --git a/Marlin/src/pins/pins_RAMPS_FD_V1.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h
similarity index 98%
rename from Marlin/src/pins/pins_RAMPS_FD_V1.h
rename to Marlin/src/pins/sam/pins_RAMPS_FD_V1.h
index 684489403a..c0e3584c3c 100644
--- a/Marlin/src/pins/pins_RAMPS_FD_V1.h
+++ b/Marlin/src/pins/sam/pins_RAMPS_FD_V1.h
@@ -205,7 +205,7 @@
#endif // HAS_SPI_LCD
-#if HAS_DRIVER(TMC2208) || HAS_DRIVER(TMC2209)
+#if HAS_TMC220x
/**
* TMC2208/TMC2209 stepper drivers
*
@@ -230,6 +230,6 @@
//
#if HOTENDS < 3 && HAS_CUTTER && !PIN_EXISTS(SPINDLE_LASER_ENA)
#define SPINDLE_LASER_ENA_PIN 45 // Use E2 ENA
- #define SPINDLE_LASER_PWM_PIN 12 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_PWM_PIN 12 // Hardware PWM
#define SPINDLE_DIR_PIN 47 // Use E2 DIR
#endif
diff --git a/Marlin/src/pins/pins_RAMPS_FD_V2.h b/Marlin/src/pins/sam/pins_RAMPS_FD_V2.h
similarity index 100%
rename from Marlin/src/pins/pins_RAMPS_FD_V2.h
rename to Marlin/src/pins/sam/pins_RAMPS_FD_V2.h
diff --git a/Marlin/src/pins/pins_RAMPS_SMART.h b/Marlin/src/pins/sam/pins_RAMPS_SMART.h
similarity index 92%
rename from Marlin/src/pins/pins_RAMPS_SMART.h
rename to Marlin/src/pins/sam/pins_RAMPS_SMART.h
index cd65aef627..0ba4114804 100644
--- a/Marlin/src/pins/pins_RAMPS_SMART.h
+++ b/Marlin/src/pins/sam/pins_RAMPS_SMART.h
@@ -90,9 +90,9 @@
// SPI for Max6675 or Max31855 Thermocouple
#undef MAX6675_SS_PIN
#if DISABLED(SDSUPPORT)
- #define MAX6675_SS_PIN 67 // Do not use pin 53 if there is even the remote possibility of using Display/SD card
+ #define MAX6675_SS_PIN 67 // Don't use 53 if there is even the remote possibility of using Display/SD card
#else
- #define MAX6675_SS_PIN 67 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
+ #define MAX6675_SS_PIN 67 // Don't use 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present
#endif
//
diff --git a/Marlin/src/pins/pins_RURAMPS4D_11.h b/Marlin/src/pins/sam/pins_RURAMPS4D_11.h
similarity index 100%
rename from Marlin/src/pins/pins_RURAMPS4D_11.h
rename to Marlin/src/pins/sam/pins_RURAMPS4D_11.h
diff --git a/Marlin/src/pins/pins_RURAMPS4D_13.h b/Marlin/src/pins/sam/pins_RURAMPS4D_13.h
similarity index 100%
rename from Marlin/src/pins/pins_RURAMPS4D_13.h
rename to Marlin/src/pins/sam/pins_RURAMPS4D_13.h
diff --git a/Marlin/src/pins/pins_ULTRATRONICS_PRO.h b/Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h
similarity index 100%
rename from Marlin/src/pins/pins_ULTRATRONICS_PRO.h
rename to Marlin/src/pins/sam/pins_ULTRATRONICS_PRO.h
diff --git a/Marlin/src/pins/pins_ANET_10.h b/Marlin/src/pins/sanguino/pins_ANET_10.h
similarity index 100%
rename from Marlin/src/pins/pins_ANET_10.h
rename to Marlin/src/pins/sanguino/pins_ANET_10.h
diff --git a/Marlin/src/pins/pins_AZTEEG_X1.h b/Marlin/src/pins/sanguino/pins_AZTEEG_X1.h
similarity index 100%
rename from Marlin/src/pins/pins_AZTEEG_X1.h
rename to Marlin/src/pins/sanguino/pins_AZTEEG_X1.h
diff --git a/Marlin/src/pins/pins_GEN3_MONOLITHIC.h b/Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h
similarity index 100%
rename from Marlin/src/pins/pins_GEN3_MONOLITHIC.h
rename to Marlin/src/pins/sanguino/pins_GEN3_MONOLITHIC.h
diff --git a/Marlin/src/pins/pins_GEN3_PLUS.h b/Marlin/src/pins/sanguino/pins_GEN3_PLUS.h
similarity index 100%
rename from Marlin/src/pins/pins_GEN3_PLUS.h
rename to Marlin/src/pins/sanguino/pins_GEN3_PLUS.h
diff --git a/Marlin/src/pins/pins_GEN6.h b/Marlin/src/pins/sanguino/pins_GEN6.h
similarity index 94%
rename from Marlin/src/pins/pins_GEN6.h
rename to Marlin/src/pins/sanguino/pins_GEN6.h
index 42abd00137..2857f6f777 100644
--- a/Marlin/src/pins/pins_GEN6.h
+++ b/Marlin/src/pins/sanguino/pins_GEN6.h
@@ -106,7 +106,7 @@
//
#define SDSS 17
#define DEBUG_PIN 0
-#define CASE_LIGHT_PIN 16 // MUST BE HARDWARE PWM
+#define CASE_LIGHT_PIN 16 // Hardware PWM
// RS485 pins
#define TX_ENABLE_PIN 12
@@ -115,6 +115,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 5 // Pin should have a pullup/pulldown!
-#define SPINDLE_LASER_PWM_PIN 16 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown!
+#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM
#define SPINDLE_DIR_PIN 6
diff --git a/Marlin/src/pins/pins_GEN6_DELUXE.h b/Marlin/src/pins/sanguino/pins_GEN6_DELUXE.h
similarity index 100%
rename from Marlin/src/pins/pins_GEN6_DELUXE.h
rename to Marlin/src/pins/sanguino/pins_GEN6_DELUXE.h
diff --git a/Marlin/src/pins/pins_GEN7_12.h b/Marlin/src/pins/sanguino/pins_GEN7_12.h
similarity index 91%
rename from Marlin/src/pins/pins_GEN7_12.h
rename to Marlin/src/pins/sanguino/pins_GEN7_12.h
index 2b9411feb3..cd1b5b5998 100644
--- a/Marlin/src/pins/pins_GEN7_12.h
+++ b/Marlin/src/pins/sanguino/pins_GEN7_12.h
@@ -123,14 +123,14 @@
#define PS_ON_PIN 15
#if GEN7_VERSION < 13
- #define CASE_LIGHT_PIN 16 // MUST BE HARDWARE PWM
+ #define CASE_LIGHT_PIN 16 // Hardware PWM
#else // Gen7 v1.3 removed the I2C connector & signals so need to get PWM off the PC power supply header
- #define CASE_LIGHT_PIN 15 // MUST BE HARDWARE PWM
+ #define CASE_LIGHT_PIN 15 // Hardware PWM
#endif
// All these generations of Gen7 supply thermistor power
// via PS_ON, so ignore bad thermistor readings
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#define DEBUG_PIN 0
@@ -141,10 +141,10 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 10 // Pin should have a pullup/pulldown!
+#define SPINDLE_LASER_ENA_PIN 10 // Pullup or pulldown!
#define SPINDLE_DIR_PIN 11
#if GEN7_VERSION < 13
- #define SPINDLE_LASER_PWM_PIN 16 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM
#else // Gen7 v1.3 removed the I2C connector & signals so need to get PWM off the PC power supply header
- #define SPINDLE_LASER_PWM_PIN 15 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_PWM_PIN 15 // Hardware PWM
#endif
diff --git a/Marlin/src/pins/pins_GEN7_13.h b/Marlin/src/pins/sanguino/pins_GEN7_13.h
similarity index 100%
rename from Marlin/src/pins/pins_GEN7_13.h
rename to Marlin/src/pins/sanguino/pins_GEN7_13.h
diff --git a/Marlin/src/pins/pins_GEN7_14.h b/Marlin/src/pins/sanguino/pins_GEN7_14.h
similarity index 93%
rename from Marlin/src/pins/pins_GEN7_14.h
rename to Marlin/src/pins/sanguino/pins_GEN7_14.h
index 6228db7ac4..064ffd81e2 100644
--- a/Marlin/src/pins/pins_GEN7_14.h
+++ b/Marlin/src/pins/sanguino/pins_GEN7_14.h
@@ -102,7 +102,7 @@
// Misc. Functions
//
#define PS_ON_PIN 15
-#define CASE_LIGHT_PIN 15 // MUST BE HARDWARE PWM
+#define CASE_LIGHT_PIN 15 // Hardware PWM
// A pin for debugging
#define DEBUG_PIN 0
@@ -114,6 +114,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 20 // Pin should have a pullup/pulldown!
-#define SPINDLE_LASER_PWM_PIN 16 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENA_PIN 20 // Pullup or pulldown!
+#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM
#define SPINDLE_DIR_PIN 21
diff --git a/Marlin/src/pins/pins_GEN7_CUSTOM.h b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h
similarity index 94%
rename from Marlin/src/pins/pins_GEN7_CUSTOM.h
rename to Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h
index 04689b2ca8..d3e2b35a6d 100644
--- a/Marlin/src/pins/pins_GEN7_CUSTOM.h
+++ b/Marlin/src/pins/sanguino/pins_GEN7_CUSTOM.h
@@ -104,7 +104,7 @@
//
#define SDSS 31 // SCL pin of I2C header || CS Pin for SD Card support
#define PS_ON_PIN 19
-#define CASE_LIGHT_PIN 15 // MUST BE HARDWARE PWM
+#define CASE_LIGHT_PIN 15 // Hardware PWM
// A pin for debugging
#define DEBUG_PIN -1
@@ -134,6 +134,6 @@
//
// M3/M4/M5 - Spindle/Laser Control
//
-#define SPINDLE_LASER_ENA_PIN 5 // Pin should have a pullup/pulldown!
-#define SPINDLE_LASER_PWM_PIN 16 // MUST BE HARDWARE PWM
+#define SPINDLE_LASER_ENA_PIN 5 // Pullup or pulldown!
+#define SPINDLE_LASER_PWM_PIN 16 // Hardware PWM
#define SPINDLE_DIR_PIN 6
diff --git a/Marlin/src/pins/pins_MELZI.h b/Marlin/src/pins/sanguino/pins_MELZI.h
similarity index 100%
rename from Marlin/src/pins/pins_MELZI.h
rename to Marlin/src/pins/sanguino/pins_MELZI.h
diff --git a/Marlin/src/pins/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h
similarity index 100%
rename from Marlin/src/pins/pins_MELZI_CREALITY.h
rename to Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h
diff --git a/Marlin/src/pins/pins_MELZI_MAKR3D.h b/Marlin/src/pins/sanguino/pins_MELZI_MAKR3D.h
similarity index 100%
rename from Marlin/src/pins/pins_MELZI_MAKR3D.h
rename to Marlin/src/pins/sanguino/pins_MELZI_MAKR3D.h
diff --git a/Marlin/src/pins/pins_MELZI_MALYAN.h b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h
similarity index 100%
rename from Marlin/src/pins/pins_MELZI_MALYAN.h
rename to Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h
diff --git a/Marlin/src/pins/pins_MELZI_TRONXY.h b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h
similarity index 100%
rename from Marlin/src/pins/pins_MELZI_TRONXY.h
rename to Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h
diff --git a/Marlin/src/pins/pins_OMCA.h b/Marlin/src/pins/sanguino/pins_OMCA.h
similarity index 100%
rename from Marlin/src/pins/pins_OMCA.h
rename to Marlin/src/pins/sanguino/pins_OMCA.h
diff --git a/Marlin/src/pins/pins_OMCA_A.h b/Marlin/src/pins/sanguino/pins_OMCA_A.h
similarity index 100%
rename from Marlin/src/pins/pins_OMCA_A.h
rename to Marlin/src/pins/sanguino/pins_OMCA_A.h
diff --git a/Marlin/src/pins/pins_SANGUINOLOLU_11.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h
similarity index 95%
rename from Marlin/src/pins/pins_SANGUINOLOLU_11.h
rename to Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h
index f94d7a03e9..978a21d2e7 100644
--- a/Marlin/src/pins/pins_SANGUINOLOLU_11.h
+++ b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_11.h
@@ -139,7 +139,7 @@
#endif
#if NONE(SPINDLE_FEATURE, LASER_FEATURE) && ENABLED(SANGUINOLOLU_V_1_2) && !BOTH(ULTRA_LCD, NEWPANEL) // try to use IO Header
- #define CASE_LIGHT_PIN 4 // MUST BE HARDWARE PWM - see if IO Header is available
+ #define CASE_LIGHT_PIN 4 // Hardware PWM - see if IO Header is available
#endif
/**
@@ -280,8 +280,8 @@
#if HAS_CUTTER
#if !MB(AZTEEG_X1) && ENABLED(SANGUINOLOLU_V_1_2) && !BOTH(ULTRA_LCD, NEWPANEL) // try to use IO Header
- #define SPINDLE_LASER_ENA_PIN 10 // Pin should have a pullup/pulldown!
- #define SPINDLE_LASER_PWM_PIN 4 // MUST BE HARDWARE PWM
+ #define SPINDLE_LASER_ENA_PIN 10 // Pullup or pulldown!
+ #define SPINDLE_LASER_PWM_PIN 4 // Hardware PWM
#define SPINDLE_DIR_PIN 11
#elif !MB(MELZI) // use X stepper motor socket
@@ -319,8 +319,8 @@
#define X_DIR_PIN 0
#define X_ENABLE_PIN 14
#define X_STEP_PIN 1
- #define SPINDLE_LASER_PWM_PIN 15 // MUST BE HARDWARE PWM
- #define SPINDLE_LASER_ENA_PIN 21 // Pin should have a pullup!
+ #define SPINDLE_LASER_PWM_PIN 15 // Hardware PWM
+ #define SPINDLE_LASER_ENA_PIN 21 // Pullup!
#define SPINDLE_DIR_PIN -1 // No pin available on the socket for the direction pin
#endif
#endif
diff --git a/Marlin/src/pins/pins_SANGUINOLOLU_12.h b/Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h
similarity index 100%
rename from Marlin/src/pins/pins_SANGUINOLOLU_12.h
rename to Marlin/src/pins/sanguino/pins_SANGUINOLOLU_12.h
diff --git a/Marlin/src/pins/pins_SETHI.h b/Marlin/src/pins/sanguino/pins_SETHI.h
similarity index 98%
rename from Marlin/src/pins/pins_SETHI.h
rename to Marlin/src/pins/sanguino/pins_SETHI.h
index 049526a8f1..23b985fbac 100644
--- a/Marlin/src/pins/pins_SETHI.h
+++ b/Marlin/src/pins/sanguino/pins_SETHI.h
@@ -115,7 +115,7 @@
// All these generations of Gen7 supply thermistor power
// via PS_ON, so ignore bad thermistor readings
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
// our pin for debugging.
#define DEBUG_PIN 0
diff --git a/Marlin/src/pins/pins_STB_11.h b/Marlin/src/pins/sanguino/pins_STB_11.h
similarity index 99%
rename from Marlin/src/pins/pins_STB_11.h
rename to Marlin/src/pins/sanguino/pins_STB_11.h
index 9f14f1b421..511b938c4b 100644
--- a/Marlin/src/pins/pins_STB_11.h
+++ b/Marlin/src/pins/sanguino/pins_STB_11.h
@@ -26,4 +26,5 @@
*/
#define BOARD_NAME "STB V1.1"
+
#include "pins_SANGUINOLOLU_12.h"
diff --git a/Marlin/src/pins/pins_ARMED.h b/Marlin/src/pins/stm32/pins_ARMED.h
similarity index 87%
rename from Marlin/src/pins/pins_ARMED.h
rename to Marlin/src/pins/stm32/pins_ARMED.h
index 396495ea8f..4f9acc44b7 100644
--- a/Marlin/src/pins/pins_ARMED.h
+++ b/Marlin/src/pins/stm32/pins_ARMED.h
@@ -25,19 +25,14 @@
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#endif
-#ifndef ARMED_V1_0
- #define ARMED_V1_1
-#endif
+#define ARMED_V1_1
-#define DEFAULT_MACHINE_NAME "Arm'ed"
-
-#undef BOARD_NAME
-#define BOARD_NAME "Arm'ed"
+#define BOARD_NAME "Arm'ed"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
#define I2C_EEPROM
-#undef E2END
-#define E2END 0xFFF // EEPROM end address (4kB)
+#define E2END 0xFFF // 4KB
#if HOTENDS > 2 || E_STEPPERS > 2
#error "Arm'ed supports up to 2 hotends / E-steppers."
@@ -90,10 +85,10 @@
#define E0_DIR_PIN PB6
#define E0_CS_PIN PB4
-#ifdef ARMED_V1_0
- #define E0_ENABLE_PIN PB3
-#else
+#ifdef ARMED_V1_1
#define E0_ENABLE_PIN PC12
+#else
+ #define E0_ENABLE_PIN PB3
#endif
#ifdef ARMED_SWAP_X_E1
@@ -118,13 +113,13 @@
//
// Heaters / Fans
//
-#define HEATER_0_PIN PA1 // PWM pin
-#define HEATER_1_PIN PA2 // PWM pin
-#define HEATER_BED_PIN PA0 // PWM pin
+#define HEATER_0_PIN PA1 // Hardware PWM
+#define HEATER_1_PIN PA2 // Hardware PWM
+#define HEATER_BED_PIN PA0 // Hardware PWM
-#define FAN_PIN PC6 // PWM pin, Part cooling fan
-#define FAN1_PIN PC7 // PWM pin, Extruder fan
-#define FAN2_PIN PC8 // PWM pin, Controller fan
+#define FAN_PIN PC6 // Hardware PWM, Part cooling fan
+#define FAN1_PIN PC7 // Hardware PWM, Extruder fan
+#define FAN2_PIN PC8 // Hardware PWM, Controller fan
//
// Misc functions
diff --git a/Marlin/src/pins/pins_BEAST.h b/Marlin/src/pins/stm32/pins_BEAST.h
similarity index 97%
rename from Marlin/src/pins/pins_BEAST.h
rename to Marlin/src/pins/stm32/pins_BEAST.h
index 57efda845a..f2c51ac146 100644
--- a/Marlin/src/pins/pins_BEAST.h
+++ b/Marlin/src/pins/stm32/pins_BEAST.h
@@ -29,14 +29,14 @@
* 21017 Victor Perez Marlin for stm32f1 test
*/
+#define BOARD_NAME "Beast STM32"
#define DEFAULT_MACHINE_NAME "STM32F103RET6"
-#define BOARD_NAME "Marlin for STM32"
// Enable I2C_EEPROM for testing
#define I2C_EEPROM
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Steppers
@@ -255,7 +255,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // buttons are directly attached using AUX-2
+ // buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define BTN_EN1 64
#define BTN_EN2 59
diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_MINI_E3.h b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_E3.h
similarity index 91%
rename from Marlin/src/pins/pins_BIGTREE_SKR_MINI_E3.h
rename to Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_E3.h
index 34f686ef68..5c7fc758bd 100644
--- a/Marlin/src/pins/pins_BIGTREE_SKR_MINI_E3.h
+++ b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_E3.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
@@ -24,15 +24,13 @@
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
-#ifndef BOARD_NAME
- #define BOARD_NAME "BIGTREE SKR MINI E3"
-#endif
+#define BOARD_NAME "BIGTREE SKR Mini E3"
// Release PB3/PB4 (E0 STP/DIR) from JTAG pins
#define DISABLE_JTAG
-// Ignore temp readings during develpment.
-//#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Servos
diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_V1_1.h
similarity index 96%
rename from Marlin/src/pins/pins_BIGTREE_SKR_MINI_V1_1.h
rename to Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_V1_1.h
index 19c7b4b67b..cabfc254fb 100644
--- a/Marlin/src/pins/pins_BIGTREE_SKR_MINI_V1_1.h
+++ b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_MINI_V1_1.h
@@ -25,15 +25,13 @@
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
-#ifndef BOARD_NAME
- #define BOARD_NAME "BIGTREE SKR mini V1.1"
-#endif
+#define BOARD_NAME "BIGTREE SKR Mini 1.1"
//#define DISABLE_DEBUG
#define DISABLE_JTAG
-// Ignore temp readings during develpment.
-//#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Limit Switches
diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
similarity index 73%
rename from Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h
rename to Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
index dc2cfd3365..c84644f80f 100644
--- a/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h
+++ b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
@@ -29,9 +29,9 @@
#error "BIGTREE SKR Pro V1.1 supports up to 3 hotends / E-steppers."
#endif
-#define BOARD_NAME "BIGTREE SKR Pro V1.1"
+#define BOARD_NAME "BIGTREE SKR Pro 1.1"
-#define EEPROM_EMULATED_WITH_SRAM
+#define SRAM_EEPROM_EMULATION
//
// Servos
@@ -104,14 +104,20 @@
// Software SPI pins for TMC2130 stepper drivers
//
#if ENABLED(TMC_USE_SW_SPI)
- #define TMC_SW_MOSI PC12
- #define TMC_SW_MISO PC11
- #define TMC_SW_SCK PC10
+ #ifndef TMC_SW_MOSI
+ #define TMC_SW_MOSI PC12
+ #endif
+ #ifndef TMC_SW_MISO
+ #define TMC_SW_MISO PC11
+ #endif
+ #ifndef TMC_SW_SCK
+ #define TMC_SW_SCK PC10
+ #endif
#endif
-#if HAS_DRIVER(TMC2208)
+#if HAS_TMC220x
/**
- * TMC2208 stepper drivers
+ * TMC2208/TMC2209 stepper drivers
*
* Hardware serial communication ports.
* If undefined software serial is used according to the pins below
@@ -130,33 +136,33 @@
//
// Software serial
- //
+ //
#define X_SERIAL_TX_PIN PC13
- #define X_SERIAL_RX_PIN PE4
+ #define X_SERIAL_RX_PIN PC13
#define Y_SERIAL_TX_PIN PE3
- #define Y_SERIAL_RX_PIN PE2
+ #define Y_SERIAL_RX_PIN PE3
- #define Z_SERIAL_TX_PIN PE0
+ #define Z_SERIAL_TX_PIN PE1
#define Z_SERIAL_RX_PIN PE1
#define E0_SERIAL_TX_PIN PD4
- #define E0_SERIAL_RX_PIN PD2
+ #define E0_SERIAL_RX_PIN PD4
- #define E1_SERIAL_TX_PIN PD0
+ #define E1_SERIAL_TX_PIN PD1
#define E1_SERIAL_RX_PIN PD1
- #define Z2_SERIAL_TX_PIN PD6
- #define Z2_SERIAL_RX_PIN PD5
+ #define E2_SERIAL_TX_PIN PD6
+ #define E2_SERIAL_RX_PIN PD6
#endif
//
// Temperature Sensors
//
-#define TEMP_0_PIN PF3 // T0
-#define TEMP_1_PIN PF4 // T1
-#define TEMP_2_PIN PF5 // T2
-#define TEMP_BED_PIN PF6 // TB
+#define TEMP_0_PIN PF4 // T1 <-> E0
+#define TEMP_1_PIN PF5 // T2 <-> E1
+#define TEMP_2_PIN PF6 // T3 <-> E2
+#define TEMP_BED_PIN PF3 // T0 <-> Bed
//
// Heaters / Fans
@@ -174,16 +180,20 @@
//
#define SDSS PB12
-/*
-| _____ _____
-| NC | · · | GND 5V | · · | GND
-| RESET | · · | PF12(SD_DETECT) (LCD_D7) PG7 | · · | PG6 (LCD_D6)
-| (MOSI)PB15 | · · | PF11(BTN_EN2) (LCD_D5) PG3 | · · | PG2 (LCD_D4)
-| (SD_SS)PB12 | · · | PG10(BTN_EN1) (LCD_RS) PD10 | · · | PD11 (LCD_EN)
-| (SCK)PB13 | · · | PB14(MISO) (BTN_ENC) PA8 | · · | PG4 (BEEPER)
-|  ̄ ̄  ̄ ̄
-| EXP2 EXP1
-*/
+/**
+ * _____ _____
+ * NC | · · | GND 5V | · · | GND
+ * RESET | · · | PF12(SD_DETECT) (LCD_D7) PG7 | · · | PG6 (LCD_D6)
+ * (MOSI)PB15 | · · | PF11(BTN_EN2) (LCD_D5) PG3 | · · | PG2 (LCD_D4)
+ * (SD_SS)PB12 | · · | PG10(BTN_EN1) (LCD_RS) PD10 | · · | PD11 (LCD_EN)
+ * (SCK)PB13 | · · | PB14(MISO) (BTN_ENC) PA8 | · · | PG4 (BEEPER)
+ *  ̄ ̄  ̄ ̄
+ * EXP2 EXP1
+ */
+
+//
+// LCDs and Controllers
+//
#if HAS_SPI_LCD
#define BEEPER_PIN PG4
#define BTN_ENC PA8
@@ -219,7 +229,7 @@
#endif
// Alter timing for graphical display
- #if HAS_GRAPHICAL_DISPLAY
+ #if HAS_GRAPHICAL_LCD
#ifndef ST7920_DELAY_1
#define ST7920_DELAY_1 DELAY_NS(96)
#endif
diff --git a/Marlin/src/pins/pins_BLACK_STM32F407VE.h b/Marlin/src/pins/stm32/pins_BLACK_STM32F407VE.h
similarity index 96%
rename from Marlin/src/pins/pins_BLACK_STM32F407VE.h
rename to Marlin/src/pins/stm32/pins_BLACK_STM32F407VE.h
index 026648589e..6f4ab56a6c 100644
--- a/Marlin/src/pins/pins_BLACK_STM32F407VE.h
+++ b/Marlin/src/pins/stm32/pins_BLACK_STM32F407VE.h
@@ -33,12 +33,15 @@
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#endif
+#ifndef BOARD_NAME
+ #define BOARD_NAME "Black STM32F4VET6"
+#endif
+
#define DEFAULT_MACHINE_NAME "STM32F407VET6"
-//#define BOARD_NAME "Black STM32F4VET6"
//#define I2C_EEPROM
-//#define E2END 0x1FFF // EEPROM end address (8kB)
-#define EEPROM_EMULATED_WITH_SRAM
+//#define E2END 0x1FFF // 8KB
+#define SRAM_EEPROM_EMULATION
#if HOTENDS > 2 || E_STEPPERS > 2
#error "Black STM32F4VET6 supports up to 2 hotends / E-steppers."
diff --git a/Marlin/src/pins/pins_CHITU3D.h b/Marlin/src/pins/stm32/pins_CHITU3D.h
similarity index 97%
rename from Marlin/src/pins/pins_CHITU3D.h
rename to Marlin/src/pins/stm32/pins_CHITU3D.h
index 59f6b66bb7..3ae9ccc205 100644
--- a/Marlin/src/pins/pins_CHITU3D.h
+++ b/Marlin/src/pins/stm32/pins_CHITU3D.h
@@ -29,14 +29,14 @@
* 2017 Victor Perez Marlin for stm32f1 test
*/
+#define BOARD_NAME "Chitu3D"
#define DEFAULT_MACHINE_NAME "STM32F103RET6"
-#define BOARD_NAME "Chitu3d Marlin"
// Enable I2C_EEPROM for testing
//#define I2C_EEPROM
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Steppers
@@ -253,7 +253,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // buttons are directly attached using AUX-2
+ // buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define BTN_EN1 64
#define BTN_EN2 59
diff --git a/Marlin/src/pins/pins_FYSETC_AIO_II.h b/Marlin/src/pins/stm32/pins_FYSETC_AIO_II.h
similarity index 97%
rename from Marlin/src/pins/pins_FYSETC_AIO_II.h
rename to Marlin/src/pins/stm32/pins_FYSETC_AIO_II.h
index 49879ba50d..b63e419f35 100644
--- a/Marlin/src/pins/pins_FYSETC_AIO_II.h
+++ b/Marlin/src/pins/stm32/pins_FYSETC_AIO_II.h
@@ -30,8 +30,8 @@
#define pins_v2_20190128 // geo-f:add for new pins define
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Limit Switches
diff --git a/Marlin/src/pins/pins_FYSETC_CHEETAH.h b/Marlin/src/pins/stm32/pins_FYSETC_CHEETAH.h
similarity index 95%
rename from Marlin/src/pins/pins_FYSETC_CHEETAH.h
rename to Marlin/src/pins/stm32/pins_FYSETC_CHEETAH.h
index c3be9431a2..b7d85bd8d7 100644
--- a/Marlin/src/pins/pins_FYSETC_CHEETAH.h
+++ b/Marlin/src/pins/stm32/pins_FYSETC_CHEETAH.h
@@ -27,11 +27,11 @@
#define DEFAULT_MACHINE_NAME "3D Printer"
-#define BOARD_NAME "FYSETC CHEETAH"
+#define BOARD_NAME "FYSETC Cheetah"
#define BOARD_WEBSITE_URL "https://fysetc.com"
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Servos
diff --git a/Marlin/src/pins/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32/pins_GTM32_PRO_VB.h
similarity index 98%
rename from Marlin/src/pins/pins_GTM32_PRO_VB.h
rename to Marlin/src/pins/stm32/pins_GTM32_PRO_VB.h
index 82a8e39555..c2f5cbc5ea 100644
--- a/Marlin/src/pins/pins_GTM32_PRO_VB.h
+++ b/Marlin/src/pins/stm32/pins_GTM32_PRO_VB.h
@@ -30,8 +30,8 @@
#error "Oops! Select an STM32F1 board in 'Tools > Board.'"
#endif
+#define BOARD_NAME "GTM32 Pro VB"
#define DEFAULT_MACHINE_NAME "STM32F103VET6"
-#define BOARD_NAME "GTM32 Pro VB"
//#define DISABLE_DEBUG
@@ -49,11 +49,11 @@
//#define DISABLE_JTAGSWD
// Ignore temp readings during development.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
// Enable EEPROM Emulation for this board as it doesn't have EEPROM
#define FLASH_EEPROM_EMULATION
-#define E2END 0xFFF // EEPROM end address (4kB)
+#define E2END 0xFFF // 4KB
//
// Limit Switches
@@ -224,7 +224,7 @@
#endif
#define SDSS SS_PIN
-
+
//
// ESP WiFi can be soldered to J9 connector which is wired to USART2.
// Must define WIFISUPPORT in Configuration.h for the printer.
diff --git a/Marlin/src/pins/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
similarity index 93%
rename from Marlin/src/pins/pins_JGAURORA_A5S_A1.h
rename to Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
index 4802bb1c0f..f68e8dc514 100644
--- a/Marlin/src/pins/pins_JGAURORA_A5S_A1.h
+++ b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
@@ -41,14 +41,14 @@
//#define MCU_STM32F103ZE // not yet required
-// // I2C EEPROM with 64K of space - AT24C64
-// #define I2C_EEPROM
-// #define E2END 0x7FFF
+// #define I2C_EEPROM // AT24C64
+// #define E2END 0x7FFF // 64KB
// Enable EEPROM Emulation for this board
//#define FLASH_EEPROM_EMULATION 1
-//#define E2END 0xFFF //((uint32)(EEPROM_START_ADDRESS + EEPROM_PAGE_SIZE + EEPROM_PAGE_SIZE)) // not 0xFFF
+//#define E2END 0xFFF // 4KB
+//#define E2END uint32(EEPROM_START_ADDRESS + (EEPROM_PAGE_SIZE * 2) - 1)
//#define EEPROM_CHITCHAT
//#define DEBUG_EEPROM_READWRITE
diff --git a/Marlin/src/pins/pins_MALYAN_M200.h b/Marlin/src/pins/stm32/pins_MALYAN_M200.h
similarity index 98%
rename from Marlin/src/pins/pins_MALYAN_M200.h
rename to Marlin/src/pins/stm32/pins_MALYAN_M200.h
index 63d0b8f9a2..0d15441ad3 100644
--- a/Marlin/src/pins/pins_MALYAN_M200.h
+++ b/Marlin/src/pins/stm32/pins_MALYAN_M200.h
@@ -29,7 +29,7 @@
#error "Oops! You must be compiling for STM32."
#endif
-#define BOARD_NAME "MALYANM200"
+#define BOARD_NAME "Malyan M200"
// Enable EEPROM Emulation for this board
// This setting should probably be in configuration.h
diff --git a/Marlin/src/pins/pins_MKS_ROBIN.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_ROBIN.h
rename to Marlin/src/pins/stm32/pins_MKS_ROBIN.h
diff --git a/Marlin/src/pins/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_ROBIN_MINI.h
rename to Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
diff --git a/Marlin/src/pins/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
similarity index 100%
rename from Marlin/src/pins/pins_MKS_ROBIN_NANO.h
rename to Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
diff --git a/Marlin/src/pins/pins_MORPHEUS.h b/Marlin/src/pins/stm32/pins_MORPHEUS.h
similarity index 100%
rename from Marlin/src/pins/pins_MORPHEUS.h
rename to Marlin/src/pins/stm32/pins_MORPHEUS.h
diff --git a/Marlin/src/pins/pins_REMRAM_V1.h b/Marlin/src/pins/stm32/pins_REMRAM_V1.h
similarity index 96%
rename from Marlin/src/pins/pins_REMRAM_V1.h
rename to Marlin/src/pins/stm32/pins_REMRAM_V1.h
index 409d47b2c2..6e72bdc2ec 100644
--- a/Marlin/src/pins/pins_REMRAM_V1.h
+++ b/Marlin/src/pins/stm32/pins_REMRAM_V1.h
@@ -25,10 +25,10 @@
#error "Oops! Select an STM32F7 board in 'Tools > Board.'"
#endif
+#define BOARD_NAME "RemRam v1"
#define DEFAULT_MACHINE_NAME "RemRam"
-#define BOARD_NAME "RemRam v1"
-#define EEPROM_EMULATED_WITH_SRAM // Emulate the EEPROM using Backup SRAM
+#define SRAM_EEPROM_EMULATION // Emulate the EEPROM using Backup SRAM
#if HOTENDS > 1 || E_STEPPERS > 1
#error "RemRam supports only one hotend / E-stepper."
diff --git a/Marlin/src/pins/pins_RUMBA32.h b/Marlin/src/pins/stm32/pins_RUMBA32.h
similarity index 96%
rename from Marlin/src/pins/pins_RUMBA32.h
rename to Marlin/src/pins/stm32/pins_RUMBA32.h
index f3fb0a3d4a..4c5f4df39e 100644
--- a/Marlin/src/pins/pins_RUMBA32.h
+++ b/Marlin/src/pins/stm32/pins_RUMBA32.h
@@ -26,12 +26,11 @@
#endif
#define RUMBA32_V1_0
-#define DEFAULT_MACHINE_NAME "RUMBA32"
-#define BOARD_NAME "RUMBA32"
+#define BOARD_NAME "RUMBA32"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
//#define I2C_EEPROM
-
-#define E2END 0xFFF // EEPROM end address (4kB)
+#define E2END 0xFFF // 4KB
#if HOTENDS > 3 || E_STEPPERS > 3
#error "RUMBA32 supports up to 3 hotends / E-steppers."
diff --git a/Marlin/src/pins/pins_STEVAL.h b/Marlin/src/pins/stm32/pins_STEVAL.h
similarity index 100%
rename from Marlin/src/pins/pins_STEVAL.h
rename to Marlin/src/pins/stm32/pins_STEVAL.h
diff --git a/Marlin/src/pins/pins_STM32F1R.h b/Marlin/src/pins/stm32/pins_STM32F1R.h
similarity index 97%
rename from Marlin/src/pins/pins_STM32F1R.h
rename to Marlin/src/pins/stm32/pins_STM32F1R.h
index 91de11a959..9a709cb464 100644
--- a/Marlin/src/pins/pins_STM32F1R.h
+++ b/Marlin/src/pins/stm32/pins_STM32F1R.h
@@ -29,11 +29,11 @@
* 21017 Victor Perez Marlin for stm32f1 test
*/
+#define BOARD_NAME "Misc. STM32F1R"
#define DEFAULT_MACHINE_NAME "STM32F103RET6"
-#define BOARD_NAME "Marlin for STM32"
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Limit Switches
@@ -233,7 +233,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // buttons are directly attached using AUX-2
+ // buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define BTN_EN1 64
#define BTN_EN2 59
diff --git a/Marlin/src/pins/pins_STM32F4.h b/Marlin/src/pins/stm32/pins_STM32F4.h
similarity index 95%
rename from Marlin/src/pins/pins_STM32F4.h
rename to Marlin/src/pins/stm32/pins_STM32F4.h
index 7ce1d2d6c5..75c78d0de9 100644
--- a/Marlin/src/pins/pins_STM32F4.h
+++ b/Marlin/src/pins/stm32/pins_STM32F4.h
@@ -25,15 +25,15 @@
#error "Oops! Select an STM32F4 board in 'Tools > Board.'"
#endif
+#define BOARD_NAME "Misc. STM32F4"
#define DEFAULT_MACHINE_NAME "STM32F407VET6"
-#define BOARD_NAME "STM32F4 Board"
//#define I2C_EEPROM
-#define E2END 0xFFF // EEPROM end address (4kB)
+#define E2END 0xFFF // 4KB
-// Ignore temp readings during develpment.
-//#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#if HOTENDS > 2 || E_STEPPERS > 2
#error "STM32F4 supports up to 2 hotends / E-steppers."
diff --git a/Marlin/src/pins/pins_STM3R_MINI.h b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
similarity index 97%
rename from Marlin/src/pins/pins_STM3R_MINI.h
rename to Marlin/src/pins/stm32/pins_STM3R_MINI.h
index acf2dfaf29..b4b181986c 100644
--- a/Marlin/src/pins/pins_STM3R_MINI.h
+++ b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
@@ -29,14 +29,14 @@
* 21017 Victor Perez Marlin for stm32f1 test
*/
-#define DEFAULT_MACHINE_NAME "STM3R Mini"
-#define BOARD_NAME "Marlin for STM32"
+#define BOARD_NAME "STM3R Mini"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
// Enable I2C_EEPROM for testing
#define I2C_EEPROM
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
//
// Limit Switches
@@ -249,7 +249,7 @@
// Beeper on AUX-4
#define BEEPER_PIN 33
- // buttons are directly attached using AUX-2
+ // buttons are directly attached to AUX-2
#if ENABLED(REPRAPWORLD_KEYPAD)
#define BTN_EN1 64
#define BTN_EN2 59
diff --git a/Marlin/src/pins/pins_THE_BORG.h b/Marlin/src/pins/stm32/pins_THE_BORG.h
similarity index 96%
rename from Marlin/src/pins/pins_THE_BORG.h
rename to Marlin/src/pins/stm32/pins_THE_BORG.h
index 141320f88c..364179bc02 100644
--- a/Marlin/src/pins/pins_THE_BORG.h
+++ b/Marlin/src/pins/stm32/pins_THE_BORG.h
@@ -25,13 +25,13 @@
#error "Oops! Select an STM32F7 board in 'Tools > Board.'"
#endif
-#define DEFAULT_MACHINE_NAME "The-Borge"
-#define BOARD_NAME "The-Borge"
+#define BOARD_NAME "The-Borge"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
#define E2END 0xFFF // EEPROM end address
-// Ignore temp readings during develpment.
-#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+// Ignore temp readings during development.
+//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#if HOTENDS > 3 || E_STEPPERS > 3
#error "The-Borg supports up to 3 hotends / E-steppers."
diff --git a/Marlin/src/pins/pins_5DPRINT.h b/Marlin/src/pins/teensy2/pins_5DPRINT.h
old mode 100755
new mode 100644
similarity index 100%
rename from Marlin/src/pins/pins_5DPRINT.h
rename to Marlin/src/pins/teensy2/pins_5DPRINT.h
diff --git a/Marlin/src/pins/pins_BRAINWAVE.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE.h
similarity index 100%
rename from Marlin/src/pins/pins_BRAINWAVE.h
rename to Marlin/src/pins/teensy2/pins_BRAINWAVE.h
diff --git a/Marlin/src/pins/pins_BRAINWAVE_PRO.h b/Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h
similarity index 100%
rename from Marlin/src/pins/pins_BRAINWAVE_PRO.h
rename to Marlin/src/pins/teensy2/pins_BRAINWAVE_PRO.h
diff --git a/Marlin/src/pins/pins_PRINTRBOARD.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD.h
similarity index 100%
rename from Marlin/src/pins/pins_PRINTRBOARD.h
rename to Marlin/src/pins/teensy2/pins_PRINTRBOARD.h
diff --git a/Marlin/src/pins/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h
similarity index 100%
rename from Marlin/src/pins/pins_PRINTRBOARD_REVF.h
rename to Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h
diff --git a/Marlin/src/pins/pins_SAV_MKI.h b/Marlin/src/pins/teensy2/pins_SAV_MKI.h
similarity index 97%
rename from Marlin/src/pins/pins_SAV_MKI.h
rename to Marlin/src/pins/teensy2/pins_SAV_MKI.h
index 82d7630311..17928cd139 100644
--- a/Marlin/src/pins/pins_SAV_MKI.h
+++ b/Marlin/src/pins/teensy2/pins_SAV_MKI.h
@@ -66,9 +66,9 @@
#error "Oops! Select 'Teensy++ 2.0' or 'Printrboard' in 'Tools > Board.'"
#endif
-#define DEFAULT_MACHINE_NAME "SAV MkI"
-#define DEFAULT_SOURCE_CODE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config"
#define BOARD_NAME "SAV MkI"
+#define DEFAULT_MACHINE_NAME BOARD_NAME
+#define DEFAULT_SOURCE_CODE_URL "https://tinyurl.com/onru38b"
//
// Servos
diff --git a/Marlin/src/pins/pins_TEENSY2.h b/Marlin/src/pins/teensy2/pins_TEENSY2.h
similarity index 100%
rename from Marlin/src/pins/pins_TEENSY2.h
rename to Marlin/src/pins/teensy2/pins_TEENSY2.h
diff --git a/Marlin/src/pins/pins_TEENSYLU.h b/Marlin/src/pins/teensy2/pins_TEENSYLU.h
old mode 100755
new mode 100644
similarity index 100%
rename from Marlin/src/pins/pins_TEENSYLU.h
rename to Marlin/src/pins/teensy2/pins_TEENSYLU.h
diff --git a/Marlin/src/pins/pins_TEENSY31_32.h b/Marlin/src/pins/teensy3/pins_TEENSY31_32.h
similarity index 100%
rename from Marlin/src/pins/pins_TEENSY31_32.h
rename to Marlin/src/pins/teensy3/pins_TEENSY31_32.h
diff --git a/Marlin/src/pins/pins_TEENSY35_36.h b/Marlin/src/pins/teensy3/pins_TEENSY35_36.h
similarity index 100%
rename from Marlin/src/pins/pins_TEENSY35_36.h
rename to Marlin/src/pins/teensy3/pins_TEENSY35_36.h
diff --git a/Marlin/src/sd/Sd2Card.cpp b/Marlin/src/sd/Sd2Card.cpp
index 7942adde5f..a6223858cb 100644
--- a/Marlin/src/sd/Sd2Card.cpp
+++ b/Marlin/src/sd/Sd2Card.cpp
@@ -227,7 +227,7 @@ bool Sd2Card::eraseSingleBlockEnable() {
* \return true for success, false for failure.
* The reason for failure can be determined by calling errorCode() and errorData().
*/
-bool Sd2Card::init(const uint8_t sckRateID/*=0*/, const pin_t chipSelectPin/*=SD_CHIP_SELECT_PIN*/) {
+bool Sd2Card::init(const uint8_t sckRateID, const pin_t chipSelectPin) {
errorCode_ = type_ = 0;
chipSelectPin_ = chipSelectPin;
// 16-bit init start time allows over a minute
diff --git a/Marlin/src/sd/Sd2Card.h b/Marlin/src/sd/Sd2Card.h
index cc895b0092..f44dbb3124 100644
--- a/Marlin/src/sd/Sd2Card.h
+++ b/Marlin/src/sd/Sd2Card.h
@@ -85,10 +85,6 @@ uint8_t const SD_CARD_TYPE_SD1 = 1, // Standard capacity V1
#elif USE_SOFTWARE_SPI
#define SOFTWARE_SPI
#endif // MEGA_SOFT_SPI
-//------------------------------------------------------------------------------
-// SPI pin definitions - do not edit here - change in SdFatConfig.h
-//
-#define SD_CHIP_SELECT_PIN SS_PIN
/**
* \class Sd2Card
@@ -123,7 +119,7 @@ public:
*
* \return true for success or false for failure.
*/
- bool init(const uint8_t sckRateID=SPI_FULL_SPEED, const pin_t chipSelectPin=SD_CHIP_SELECT_PIN);
+ bool init(const uint8_t sckRateID, const pin_t chipSelectPin);
bool readBlock(uint32_t block, uint8_t* dst);
diff --git a/Marlin/src/sd/SdVolume.h b/Marlin/src/sd/SdVolume.h
index 1c72fd3d27..b5282bdce3 100644
--- a/Marlin/src/sd/SdVolume.h
+++ b/Marlin/src/sd/SdVolume.h
@@ -33,6 +33,10 @@
* This file is part of the Arduino Sd2Card Library
*/
+#include
+
+#include "../inc/MarlinConfigPre.h"
+
#if ENABLED(USB_FLASH_DRIVE_SUPPORT)
#include "usb_flashdrive/Sd2Card_FlashDrive.h"
#elif ENABLED(SDIO_SUPPORT)
@@ -43,7 +47,6 @@
#include "SdFatConfig.h"
#include "SdFatStructs.h"
-#include
//==============================================================================
// SdVolume class
diff --git a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp
index 8de27cb319..05cc1fd855 100644
--- a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp
+++ b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h
index 6325de15e6..eafb85c3ad 100644
--- a/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h
+++ b/Marlin/src/sd/usb_flashdrive/Sd2Card_FlashDrive.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/buildroot/bin/backup_ramps b/buildroot/bin/backup_ramps
new file mode 100644
index 0000000000..b376bb74b8
--- /dev/null
+++ b/buildroot/bin/backup_ramps
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+PINS="Marlin/src/pins"
+RAMPS="$PINS/ramps/pins_RAMPS.h"
+BKUP="$PINS/ramps/pins_RAMPS.backup.h"
+
+[[ -f $RAMPS ]] && cp "$RAMPS" "$BKUP"
diff --git a/buildroot/bin/pins_set b/buildroot/bin/pins_set
index 5815bcf79d..2635ae6284 100755
--- a/buildroot/bin/pins_set
+++ b/buildroot/bin/pins_set
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-SED=$(which gsed || which sed)
+IFS='/' read -r -a PINPATH <<< "$1"
+DIR=${PINPATH[0]}
+NAM=${PINPATH[1]}
+PIN=$2
+VAL=$3
-eval "${SED} -E -i 's/(\/\/)?(#define \b${2}\b).*$/\2 ${3}/g' Marlin/src/pins/pins_${1}.h"
+SED=$(which gsed || which sed)
+eval "${SED} -E -i 's/(\/\/)?(#define +${PIN}\b).*$/\2 ${VAL}/g' Marlin/src/pins/$DIR/pins_${NAM}.h"
diff --git a/buildroot/bin/restore_configs b/buildroot/bin/restore_configs
index 50db41feda..a1ac70aa96 100755
--- a/buildroot/bin/restore_configs
+++ b/buildroot/bin/restore_configs
@@ -2,8 +2,10 @@
cp config/default/Configuration*.h Marlin
-[ -f Marlin/src/pins/pins_RAMPS.h.backup ] && cp Marlin/src/pins/pins_RAMPS.h.backup Marlin/src/pins/pins_RAMPS.h
-rm -f Marlin/src/pins/pins_RAMPS.h.backup
+PINS="Marlin/src/pins"
+RAMPS="$PINS/ramps/pins_RAMPS.h"
+BKUP="$PINS/ramps/pins_RAMPS.backup.h"
+[ -f $BKUP ] && { cp "$BKUP" "$RAMPS" ; rm -f $BKUP ; }
rm -f Marlin/_Bootscreen.h
rm -f Marlin/_Statusscreen.h
diff --git a/buildroot/share/PlatformIO/variants/BIGTREE_GENERIC_STM32F407_5X/variant.cpp b/buildroot/share/PlatformIO/variants/BIGTREE_GENERIC_STM32F407_5X/variant.cpp
index bd33570254..8e3c92fb04 100644
--- a/buildroot/share/PlatformIO/variants/BIGTREE_GENERIC_STM32F407_5X/variant.cpp
+++ b/buildroot/share/PlatformIO/variants/BIGTREE_GENERIC_STM32F407_5X/variant.cpp
@@ -108,7 +108,7 @@ const PinName digitalPin[] = {
PE_15, //D64 - 1:FSMC_D12
PD_8, //D65 - 1:FSMC_D13 / USART3_TX
PD_9, //D66 - 1:FSMC_D14 / USART3_RX
- PD_10, //D67 - 1:FSMC_D15
+ PD_10, //D67 - 1:FSMC_D15
PD_11, //D68 - 1:FSMC_A16
PD_12, //D69 - 1:FSMC_A17 / TIM4_CH1
PD_13, //D70 - 1:FSMC_A18 / TIM4_CH2
@@ -220,7 +220,7 @@ const PinName digitalPin[] = {
}
#endif
-// ----------------------------------------------------------------------------
+// ------------------------
#ifdef __cplusplus
extern "C" {
diff --git a/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.cpp b/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.cpp
index 01523224e1..4ec69543ba 100644
--- a/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.cpp
+++ b/buildroot/share/PlatformIO/variants/MARLIN_F407VE/variant.cpp
@@ -98,7 +98,7 @@ const PinName digitalPin[] = {
}
#endif
-// ----------------------------------------------------------------------------
+// ------------------------
#ifdef __cplusplus
extern "C" {
diff --git a/buildroot/share/git/mfhelp b/buildroot/share/git/mfhelp
new file mode 100644
index 0000000000..1afc4c686b
--- /dev/null
+++ b/buildroot/share/git/mfhelp
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+#
+# mfhelp
+#
+
+cat <= 1 && NAMEIND <= IND)) && { TESTENV=${NAMES[$NAMEIND-1]} ; echo ; break ; }
+ echo "Invalid selection."
+ done
+fi
+
+# Get the contents of the test file
+OUT=$( cat $TESTPATH/$TESTENV-tests 2>/dev/null ) || { echo "Can't find test '$TESTENV'." ; exit 1 ; }
+
+# Count up the number of tests
+# TODO: List test descriptions with numbers
+TESTCOUNT=$( awk "/$ISEXEC/{a++}END{print a}" <<<"$OUT" )
+
+# Get the entered or interactive test index
+CHOICE=${2:-0}
+
+# User entered a number?
+(( CHOICE && CHOICE > TESTCOUNT )) && { echo "Invalid test index '$CHOICE' (1-$TESTCOUNT)." ; exit 1 ; }
+
+if [[ $CHOICE == 0 ]]; then
+ # List test descriptions with numbers
+ echo "Available '$TESTENV' tests:" ; echo "$OUT" | {
+ IND=0
+ SED=$(which gsed || which sed)
+ while IFS= read -r LINE
+ do
+ if [[ $LINE =~ $ISEXEC ]]; then
+ DESC=$( "$SED" -E 's/^.+"(.*)".*$/\1/g' <<<"$LINE" )
+ (( ++IND < 10 )) && echo -n " "
+ echo " $IND) $DESC"
+ fi
+ done
+ }
+ CHOICE=1
+ if [[ $TESTCOUNT > 1 ]]; then
+ for (( ; ; ))
+ do
+ read -p "Select a '$TESTENV' test (1-$TESTCOUNT) : " CHOICE
+ [[ -z "$CHOICE" ]] && { echo '(canceled)' ; exit 1 ; }
+ [[ $CHOICE =~ $ISNUM ]] && ((CHOICE >= 1 && CHOICE <= TESTCOUNT)) && break
+ echo ">>> Invalid test index '$CHOICE'."
+ done
+ fi
+fi
+
+# Finally, run the specified test lines
+echo "$OUT" | {
+ IND=0
+ while IFS= read -r LINE
+ do
+ if [[ $LINE =~ $ISCMD ]]; then
+ ((!IND)) && let IND++
+ if [[ $LINE =~ $ISEXEC ]]; then
+ ((IND++ > CHOICE)) && break
+ else
+ ((!HEADER)) && {
+ HEADER=1
+ echo -e "\n#\n# Test $TESTENV ($CHOICE) $DESC\n#"
+ }
+ ((IND == CHOICE)) && { echo "$LINE" ; eval "$LINE" ; }
+ fi
+ fi
+ done
+}
+
+# Build the test too?
+echo ; read -p "Build $TESTENV test #$CHOICE (y/N) ? " BUILD_YES
+[[ $BUILD_YES == 'Y' || $BUILD_YES == 'Yes' ]] && platformio run --project-dir . -e $TESTENV
diff --git a/buildroot/share/tests/DUE-tests b/buildroot/share/tests/DUE-tests
index f793237cfb..bd4263f262 100644
--- a/buildroot/share/tests/DUE-tests
+++ b/buildroot/share/tests/DUE-tests
@@ -6,6 +6,8 @@
# exit on first failure
set -e
+backup_ramps
+
restore_configs
opt_set MOTHERBOARD BOARD_RAMPS4DUE_EFB EXTENSIBLE_UI EXTUI_EXAMPLE
opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS
@@ -19,8 +21,8 @@ opt_enable USE_XMAX_PLUG USE_YMAX_PLUG BLTOUCH AUTO_BED_LEVELING_BILINEAR \
Z_TRIPLE_STEPPER_DRIVERS Z_TRIPLE_ENDSTOPS Z_STEPPER_AUTO_ALIGN ENDSTOPPULLUPS
opt_add Z2_MAX_ENDSTOP_INVERTING false
opt_add Z3_MAX_ENDSTOP_INVERTING false
-pins_set RAMPS X_MAX_PIN -1
-pins_set RAMPS Y_MAX_PIN -1
+pins_set ramps/RAMPS X_MAX_PIN -1
+pins_set ramps/RAMPS Y_MAX_PIN -1
opt_add Z2_MAX_PIN 2
opt_add Z3_MAX_PIN 3
exec_test $1 $2 "RADDS with Z_TRIPLE_STEPPER_DRIVERS and Z_STEPPER_AUTO_ALIGN"
diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests
index d942c01cd6..c254d678b5 100644
--- a/buildroot/share/tests/megaatmega2560-tests
+++ b/buildroot/share/tests/megaatmega2560-tests
@@ -6,11 +6,6 @@
# exit on first failure
set -e
-#
-# Backup pins_RAMPS.h
-#
-cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
-
#
# Build with the default configurations
#
@@ -29,17 +24,19 @@ opt_set TEMP_SENSOR_1 1
opt_set TEMP_SENSOR_BED 2
opt_set GRID_MAX_POINTS_X 16
opt_set FANMUX0_PIN 53
-opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING EEPROM_SETTINGS \
- REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
- NEOPIXEL_LED BLINKM PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN \
- NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \
+ PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING \
+ EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
+ BLINKM PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
+ NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
+ NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_RUNOUT_SENSOR \
AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \
- FWRETRACT ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
+ BACKLASH_COMPENSATION BACKLASH_GCODE \
+ FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \
- LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST PINS_DEBUGGING \
- MAX7219_DEBUG LED_CONTROL_MENU CASE_LIGHT_MENU CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CODEPENDENT_XY_HOMING BACKLASH_COMPENSATION BACKLASH_GCODE
-opt_enable SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER
+ SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER \
+ PINS_DEBUGGING MAX7219_DEBUG
opt_set TEMP_SENSOR_CHAMBER 3
opt_set HEATER_CHAMBER_PIN 45
exec_test $1 $2 "RAMPS with 2 extruders, RepRap LCD, Linear ABL, LEDs, and many options"
@@ -263,16 +260,19 @@ exec_test $1 $2 "Many less common options"
#
use_example_configs Creality/CR-10S
exec_test $1 $2 "Full-featured CR-10S config"
+
#
# BQ Hephestos 2
#restore_configs
#use_example_configs Hephestos_2
#exec_test $1 $2 "Stuff"
+
#
# Delta Config (generic) + ABL bilinear + BLTOUCH
use_example_configs delta/generic
opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_CALIBRATION_MENU AUTO_BED_LEVELING_BILINEAR BLTOUCH BLTOUCH_FORCE_5V_MODE
exec_test $1 $2 "Delta Config (generic) + ABL bilinear + BLTOUCH"
+
#
# Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS
#
@@ -280,16 +280,19 @@ use_example_configs delta/generic
opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 Z_PROBE_ALLEN_KEY EEPROM_SETTINGS EEPROM_CHITCHAT \
OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY
exec_test $1 $2 "Delta Config (generic) + UBL + ALLEN_KEY + OLED_PANEL_TINYBOY2 + EEPROM_SETTINGS"
+
#
# Delta Config (FLSUN AC because it's complex)
#
use_example_configs delta/FLSUN/auto_calibrate
exec_test $1 $2 "Delta Config (FLSUN AC because it's complex)"
+
#
# Makibox Config need to check board type for Teensy++ 2.0
#
#use_example_configs makibox
#exec_test $1 $2 "Stuff"
+
#
# SCARA with TMC2130
#
@@ -303,6 +306,7 @@ opt_set Y_DRIVER_TYPE TMC2130
opt_set Z_DRIVER_TYPE TMC2130
opt_set E0_DRIVER_TYPE TMC2660
exec_test $1 $2 "SCARA with TMC2130, TMC2209, and TMC2660"
+
#
# Test mixed TMC config
#
@@ -315,13 +319,12 @@ opt_set X_MIN_ENDSTOP_INVERTING true
opt_set Y_MIN_ENDSTOP_INVERTING true
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER MONITOR_DRIVER_STATUS STEALTHCHOP_XY STEALTHCHOP_Z STEALTHCHOP_E HYBRID_THRESHOLD USE_ZMIN_PLUG SENSORLESS_HOMING TMC_DEBUG
exec_test $1 $2 "Mixed TMC configuration"
+
#
# tvrrug Config need to check board type for sanguino atmega644p
#
#use_example_configs tvrrug/Round2
#exec_test $1 $2 "Stuff"
-#
-#
# clean up
restore_configs
diff --git a/buildroot/share/tests/teensy35-tests b/buildroot/share/tests/teensy35-tests
index 6539bf9854..4b992113ae 100644
--- a/buildroot/share/tests/teensy35-tests
+++ b/buildroot/share/tests/teensy35-tests
@@ -6,9 +6,10 @@
# exit on first failure
set -e
+backup_ramps
+
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY35_36
-cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
exec_test $1 $2 "Teensy3.5 with default config"
#
@@ -106,7 +107,7 @@ exec_test $1 $2 "COREXZ"
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY35_36
opt_enable Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
-pins_set RAMPS X_MAX_PIN -1
+pins_set ramps/RAMPS X_MAX_PIN -1
opt_add Z2_MAX_PIN 2
opt_enable USE_XMAX_PLUG
exec_test $1 $2 "Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS"
diff --git a/config/default/Configuration.h b/config/default/Configuration.h
index 2741ef4396..6880d7bbea 100644
--- a/config/default/Configuration.h
+++ b/config/default/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration.h b/config/examples/3DFabXYZ/Migbot/Configuration.h
index 4ff3c925f6..65a26ed0cb 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_BASE_14
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "3DFabXYZ i3"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1940,31 +1938,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1998,15 +1977,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2019,6 +1989,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/AlephObjects/TAZ4/Configuration.h b/config/examples/AlephObjects/TAZ4/Configuration.h
index 18d485b3e9..205509942e 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMBO
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "TAZ"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1929,31 +1927,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1987,15 +1966,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2008,6 +1978,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/AliExpress/CL-260/Configuration.h b/config/examples/AliExpress/CL-260/Configuration.h
index a00a372f7d..26eac786b2 100644
--- a/config/examples/AliExpress/CL-260/Configuration.h
+++ b/config/examples/AliExpress/CL-260/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CL-260"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/AliExpress/UM2pExt/Configuration.h b/config/examples/AliExpress/UM2pExt/Configuration.h
index a01dee2f61..96aa4eff71 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ULTIMAIN_2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1920,31 +1918,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1978,15 +1957,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1999,6 +1969,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/A2/Configuration.h b/config/examples/Anet/A2/Configuration.h
index 2892faa4e4..8d3536bb65 100644
--- a/config/examples/Anet/A2/Configuration.h
+++ b/config/examples/Anet/A2/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anet A2"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1911,31 +1909,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1969,15 +1948,6 @@
//
#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1990,6 +1960,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/A2plus/Configuration.h b/config/examples/Anet/A2plus/Configuration.h
index f4cbb020c8..b5bff71183 100644
--- a/config/examples/Anet/A2plus/Configuration.h
+++ b/config/examples/Anet/A2plus/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anet A2+"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1911,31 +1909,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1969,15 +1948,6 @@
//
#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1990,6 +1960,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/A6/Configuration.h b/config/examples/Anet/A6/Configuration.h
index 7c4c96a780..ccef170d2b 100644
--- a/config/examples/Anet/A6/Configuration.h
+++ b/config/examples/Anet/A6/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anet A6"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2062,31 +2060,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2120,15 +2099,6 @@
//
#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2141,6 +2111,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/A8/Configuration.h b/config/examples/Anet/A8/Configuration.h
index ede1e7d4f6..6b3d197948 100644
--- a/config/examples/Anet/A8/Configuration.h
+++ b/config/examples/Anet/A8/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anet A8"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1924,31 +1922,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1982,15 +1961,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2003,6 +1973,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/A8plus/Configuration.h b/config/examples/Anet/A8plus/Configuration.h
index ac13d59734..9e1d2f09ca 100644
--- a/config/examples/Anet/A8plus/Configuration.h
+++ b/config/examples/Anet/A8plus/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anet A8 plus"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1920,31 +1918,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1978,15 +1957,6 @@
//
#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1999,6 +1969,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Anet/E16/Configuration.h b/config/examples/Anet/E16/Configuration.h
index df0eea837d..025d90598e 100644
--- a/config/examples/Anet/E16/Configuration.h
+++ b/config/examples/Anet/E16/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ANET_10
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "AnetE16V1.3"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1921,31 +1919,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1979,15 +1958,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2000,6 +1970,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/AnyCubic/i3/Configuration.h b/config/examples/AnyCubic/i3/Configuration.h
index 17af412058..059af525f4 100644
--- a/config/examples/AnyCubic/i3/Configuration.h
+++ b/config/examples/AnyCubic/i3/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_TRIGORILLA_14
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Anycubic i3"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,31 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1977,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1998,6 +1968,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/ArmEd/Configuration.h b/config/examples/ArmEd/Configuration.h
index 0862e1939e..8636e61503 100644
--- a/config/examples/ArmEd/Configuration.h
+++ b/config/examples/ArmEd/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ARMED
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1910,31 +1908,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1968,15 +1947,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1989,6 +1959,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Azteeg/X5GT/Configuration.h b/config/examples/Azteeg/X5GT/Configuration.h
index d6e02c451a..761215f194 100644
--- a/config/examples/Azteeg/X5GT/Configuration.h
+++ b/config/examples/Azteeg/X5GT/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_AZTEEG_X5_GT
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration.h b/config/examples/BIBO/TouchX/cyclops/Configuration.h
index d8472f8683..909668e506 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "BIBO2 Touch X"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/BIBO/TouchX/default/Configuration.h b/config/examples/BIBO/TouchX/default/Configuration.h
index 1298c6fbca..772e2f9d56 100644
--- a/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/config/examples/BIBO/TouchX/default/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "BIBO2 Touch X"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/BQ/Hephestos/Configuration.h b/config/examples/BQ/Hephestos/Configuration.h
index 41cb99467f..e10fd5ef8c 100644
--- a/config/examples/BQ/Hephestos/Configuration.h
+++ b/config/examples/BQ/Hephestos/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "HEPHESTOS"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1897,31 +1895,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1955,15 +1934,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1976,6 +1946,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/BQ/Hephestos_2/Configuration.h b/config/examples/BQ/Hephestos_2/Configuration.h
index ded855e50b..6f85763333 100644
--- a/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/config/examples/BQ/Hephestos_2/Configuration.h
@@ -137,18 +137,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BQ_ZUM_MEGA_3D
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "BQ Hephestos 2"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
#define MACHINE_UUID "8d083632-40c5-4649-85b8-43d9ae6c5d55" // BQ Hephestos 2 standard config
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/BQ/WITBOX/Configuration.h b/config/examples/BQ/WITBOX/Configuration.h
index 8b7e990fc2..95e8115f26 100644
--- a/config/examples/BQ/WITBOX/Configuration.h
+++ b/config/examples/BQ/WITBOX/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "WITBOX"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1897,31 +1895,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1955,15 +1934,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1976,6 +1946,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Cartesio/Configuration.h b/config/examples/Cartesio/Configuration.h
index 102218f14c..31dc5af3c9 100644
--- a/config/examples/Cartesio/Configuration.h
+++ b/config/examples/Cartesio/Configuration.h
@@ -129,19 +129,17 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
//#define MOTHERBOARD BOARD_CNCONTROLS_11
#define MOTHERBOARD BOARD_CNCONTROLS_12
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CartesioE"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1908,31 +1906,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1966,15 +1945,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1987,6 +1957,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-10/Configuration.h b/config/examples/Creality/CR-10/Configuration.h
index 80072dbb78..731ada1495 100644
--- a/config/examples/Creality/CR-10/Configuration.h
+++ b/config/examples/Creality/CR-10/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-10"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,31 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1977,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1998,6 +1968,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-10S/Configuration.h b/config/examples/Creality/CR-10S/Configuration.h
index 3921011710..202b2c9b95 100644
--- a/config/examples/Creality/CR-10S/Configuration.h
+++ b/config/examples/Creality/CR-10S/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-10S"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1910,31 +1908,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1968,15 +1947,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1989,6 +1959,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-10_5S/Configuration.h b/config/examples/Creality/CR-10_5S/Configuration.h
index d83bbd8619..f796aa3e0f 100644
--- a/config/examples/Creality/CR-10_5S/Configuration.h
+++ b/config/examples/Creality/CR-10_5S/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-10 S5"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1912,31 +1910,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1970,15 +1949,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1991,6 +1961,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-10mini/Configuration.h b/config/examples/Creality/CR-10mini/Configuration.h
index 5db69319e2..bbdfc548bf 100644
--- a/config/examples/Creality/CR-10mini/Configuration.h
+++ b/config/examples/Creality/CR-10mini/Configuration.h
@@ -138,18 +138,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-10 Mini"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1928,31 +1926,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1986,15 +1965,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2007,6 +1977,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-20 Pro/Configuration.h b/config/examples/Creality/CR-20 Pro/Configuration.h
index ae1710a1df..953efe9c8d 100644
--- a/config/examples/Creality/CR-20 Pro/Configuration.h
+++ b/config/examples/Creality/CR-20 Pro/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-20 Pro"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1906,31 +1904,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1964,15 +1943,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1985,6 +1955,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-20 Pro/_Statusscreen.h b/config/examples/Creality/CR-20 Pro/_Statusscreen.h
index e7ab39d4bf..e88e5fefa1 100644
--- a/config/examples/Creality/CR-20 Pro/_Statusscreen.h
+++ b/config/examples/Creality/CR-20 Pro/_Statusscreen.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/config/examples/Creality/CR-20/Configuration.h b/config/examples/Creality/CR-20/Configuration.h
index b2c0c3d7c0..4c06cbb6a1 100644
--- a/config/examples/Creality/CR-20/Configuration.h
+++ b/config/examples/Creality/CR-20/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-20"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1906,31 +1904,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1964,15 +1943,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1985,6 +1955,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/CR-8/Configuration.h b/config/examples/Creality/CR-8/Configuration.h
index 12fdc31d49..b8dba2df67 100644
--- a/config/examples/Creality/CR-8/Configuration.h
+++ b/config/examples/Creality/CR-8/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_ENDER_4
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CR-8"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,31 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1977,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1998,6 +1968,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/Ender-2/Configuration.h b/config/examples/Creality/Ender-2/Configuration.h
index b08fa06864..0e4f793330 100644
--- a/config/examples/Creality/Ender-2/Configuration.h
+++ b/config/examples/Creality/Ender-2/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Ender 3D"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1882,7 +1880,7 @@
// MakerLab Mini Panel with graphic
// controller and SD support - http://reprap.org/wiki/Mini_panel
//
-#define MINIPANEL
+//#define MINIPANEL
//
// MaKr3d Makr-Panel with graphic controller and SD support.
@@ -1913,36 +1911,17 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
//
-//#define MKS_MINI_12864
+#define MKS_MINI_12864
//
// FYSETC variant of the MINI12864 graphic controller with SD support
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/Ender-3/Configuration.h b/config/examples/Creality/Ender-3/Configuration.h
index fc8f490694..6a08c072b6 100644
--- a/config/examples/Creality/Ender-3/Configuration.h
+++ b/config/examples/Creality/Ender-3/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Ender-3"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1913,31 +1911,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/Ender-4/Configuration.h b/config/examples/Creality/Ender-4/Configuration.h
index 82c94749bb..d515852694 100644
--- a/config/examples/Creality/Ender-4/Configuration.h
+++ b/config/examples/Creality/Ender-4/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_ENDER_4
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Ender-4"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,31 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1977,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1998,6 +1968,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/Ender-5/Configuration.h b/config/examples/Creality/Ender-5/Configuration.h
index d9f79be3bb..a86a9708e5 100644
--- a/config/examples/Creality/Ender-5/Configuration.h
+++ b/config/examples/Creality/Ender-5/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_CREALITY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Ender-5"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1906,31 +1904,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1964,15 +1943,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1985,6 +1955,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Creality/Ender-5/_Bootscreen.h b/config/examples/Creality/Ender-5/_Bootscreen.h
index c0cbe560c6..52119ce6be 100644
--- a/config/examples/Creality/Ender-5/_Bootscreen.h
+++ b/config/examples/Creality/Ender-5/_Bootscreen.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/config/examples/Creality/Ender-5/_Statusscreen.h b/config/examples/Creality/Ender-5/_Statusscreen.h
index 0dc0853723..3da18ade4b 100644
--- a/config/examples/Creality/Ender-5/_Statusscreen.h
+++ b/config/examples/Creality/Ender-5/_Statusscreen.h
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
- * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
- * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ * 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
diff --git a/config/examples/Dagoma/Disco Ultimate/Configuration.h b/config/examples/Dagoma/Disco Ultimate/Configuration.h
index 04f27f420b..1ebb50b07d 100644
--- a/config/examples/Dagoma/Disco Ultimate/Configuration.h
+++ b/config/examples/Dagoma/Disco Ultimate/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_DAGOMA
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "DiscoUltimate"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
index 1c5bc196cb..706089fb4f 100644
--- a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
+++ b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Sidewinder X1"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1914,31 +1912,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1972,15 +1951,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1993,6 +1963,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Einstart-S/Configuration.h b/config/examples/Einstart-S/Configuration.h
index 1c73e1590b..29374fa144 100644
--- a/config/examples/Einstart-S/Configuration.h
+++ b/config/examples/Einstart-S/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_EINSTART_S
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "The Shining"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,31 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- #define U8GLIB_SSD1306
- //#define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1977,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1998,6 +1968,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
@@ -2018,11 +2025,6 @@
//
//#define EXTENSIBLE_UI
-//
-// Einstart S OLED SSD1306
-//
-#define U8GLIB_SH1106_EINSTART
-
//=============================================================================
//=============================== Graphical TFTs ==============================
//=============================================================================
diff --git a/config/examples/Felix/Configuration.h b/config/examples/Felix/Configuration.h
index e9fc4e87a7..b6d53dbbb9 100644
--- a/config/examples/Felix/Configuration.h
+++ b/config/examples/Felix/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FELIX2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Felix"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1891,31 +1889,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1949,15 +1928,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1970,6 +1940,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Felix/DUAL/Configuration.h b/config/examples/Felix/DUAL/Configuration.h
index f5838f9357..f801c2a48d 100644
--- a/config/examples/Felix/DUAL/Configuration.h
+++ b/config/examples/Felix/DUAL/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FELIX2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Felix Dual"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1891,31 +1889,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1949,15 +1928,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1970,6 +1940,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/FlashForge/CreatorPro/Configuration.h b/config/examples/FlashForge/CreatorPro/Configuration.h
index 1844833308..94df54f5c7 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MIGHTYBOARD_REVE
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CreatorPro"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1900,31 +1898,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1958,15 +1937,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1979,6 +1949,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/FolgerTech/i3-2020/Configuration.h b/config/examples/FolgerTech/i3-2020/Configuration.h
index 5dd807b817..c8f3bfe9d2 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "FT-2020 v9"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1915,31 +1913,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1973,15 +1952,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1994,6 +1964,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Formbot/Raptor/Configuration.h b/config/examples/Formbot/Raptor/Configuration.h
index d1e860e91d..a403e606d9 100644
--- a/config/examples/Formbot/Raptor/Configuration.h
+++ b/config/examples/Formbot/Raptor/Configuration.h
@@ -170,18 +170,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FORMBOT_RAPTOR
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "TM3D RaPtOr"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2014,31 +2012,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2072,15 +2051,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2093,6 +2063,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration.h b/config/examples/Formbot/T_Rex_2+/Configuration.h
index c2a338ed21..a199072368 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -132,18 +132,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FORMBOT_TREX2PLUS
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "T-Rex 2+"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1943,31 +1941,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2001,15 +1980,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2022,6 +1992,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Formbot/T_Rex_3/Configuration.h b/config/examples/Formbot/T_Rex_3/Configuration.h
index aedddf53e5..423151fa80 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -133,18 +133,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FORMBOT_TREX3
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "T-Rex 3"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1937,31 +1935,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1995,15 +1974,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2016,6 +1986,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Fysetc/AIO_II/Configuration.h b/config/examples/Fysetc/AIO_II/Configuration.h
index 5a68d6a85d..92d43b0ab7 100644
--- a/config/examples/Fysetc/AIO_II/Configuration.h
+++ b/config/examples/Fysetc/AIO_II/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FYSETC_AIO_II
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1903,31 +1901,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1961,15 +1940,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1982,6 +1952,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Fysetc/CHEETAH/Configuration.h b/config/examples/Fysetc/CHEETAH/Configuration.h
index 91d45431db..27a2cc2994 100644
--- a/config/examples/Fysetc/CHEETAH/Configuration.h
+++ b/config/examples/Fysetc/CHEETAH/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_FYSETC_CHEETAH
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1903,31 +1901,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1961,15 +1940,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1982,6 +1952,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Fysetc/F6_13/Configuration.h b/config/examples/Fysetc/F6_13/Configuration.h
index cad8fdd883..d147620b64 100644
--- a/config/examples/Fysetc/F6_13/Configuration.h
+++ b/config/examples/Fysetc/F6_13/Configuration.h
@@ -129,20 +129,18 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
//#define MOTHERBOARD BOARD_RAMPS_14_EFB
//#define MOTHERBOARD BOARD_FYSETC_AIO_II
#define MOTHERBOARD BOARD_FYSETC_F6_13
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1905,31 +1903,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1963,15 +1942,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1984,6 +1954,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/A10/Configuration.h b/config/examples/Geeetech/A10/Configuration.h
index 21fd449c4d..c9f1eef867 100644
--- a/config/examples/Geeetech/A10/Configuration.h
+++ b/config/examples/Geeetech/A10/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_V3
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Geeetech A10"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1894,31 +1892,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1952,15 +1931,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1973,6 +1943,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/A10M/Configuration.h b/config/examples/Geeetech/A10M/Configuration.h
index ea40b26bae..f07f45bffc 100644
--- a/config/examples/Geeetech/A10M/Configuration.h
+++ b/config/examples/Geeetech/A10M/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_V3
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Geeetech A10M"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1894,31 +1892,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1952,15 +1931,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1973,6 +1943,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/A20M/Configuration.h b/config/examples/Geeetech/A20M/Configuration.h
index 7fa74c6f6d..4187dacd78 100644
--- a/config/examples/Geeetech/A20M/Configuration.h
+++ b/config/examples/Geeetech/A20M/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_V3_A20
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Geeetech A20M"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1896,31 +1894,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1954,15 +1933,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1975,6 +1945,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/GT2560/Configuration.h b/config/examples/Geeetech/GT2560/Configuration.h
index c2a62ca821..62526163e4 100644
--- a/config/examples/Geeetech/GT2560/Configuration.h
+++ b/config/examples/Geeetech/GT2560/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1924,31 +1922,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1982,15 +1961,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2003,6 +1973,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
index 6d21d93fed..c6131536f4 100644
--- a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
+++ b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A_PLUS
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "RdW i3 Pro X"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/MeCreator2/Configuration.h b/config/examples/Geeetech/MeCreator2/Configuration.h
index 43a0c00a43..55b4a33265 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_V3_MC2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "MeCreator2"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1916,31 +1914,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1974,15 +1953,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1995,6 +1965,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
index 8286304999..96e613e439 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A_PLUS
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "i3 Pro B"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1930,31 +1928,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1988,15 +1967,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2009,6 +1979,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
index 5e77489ed5..12d7279197 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A_PLUS
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "i3 Pro B"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1929,31 +1927,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1987,15 +1966,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2008,6 +1978,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index 30d1d93421..504e34fd16 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "i3 Pro C"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index 9afb58b916..0b74d2877a 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GT2560_REV_A_PLUS
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "i3 Pro W"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Infitary/i3-M508/Configuration.h b/config/examples/Infitary/i3-M508/Configuration.h
index c5dd82cc21..ef6f904956 100644
--- a/config/examples/Infitary/i3-M508/Configuration.h
+++ b/config/examples/Infitary/i3-M508/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Infitary M508"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1913,31 +1911,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/JGAurora/A1/Configuration.h b/config/examples/JGAurora/A1/Configuration.h
index 29837359f5..9a1b3c205d 100644
--- a/config/examples/JGAurora/A1/Configuration.h
+++ b/config/examples/JGAurora/A1/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_JGAURORA_A5S_A1
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "JGAurora A1"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1906,31 +1904,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1964,15 +1943,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1985,6 +1955,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/JGAurora/A5/Configuration.h b/config/examples/JGAurora/A5/Configuration.h
index 974afb1f6c..38d35512a1 100644
--- a/config/examples/JGAurora/A5/Configuration.h
+++ b/config/examples/JGAurora/A5/Configuration.h
@@ -134,18 +134,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "JGAurora A5"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1921,31 +1919,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1979,15 +1958,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2000,6 +1970,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/JGAurora/A5S/Configuration.h b/config/examples/JGAurora/A5S/Configuration.h
index 511a0baf00..440f91122a 100644
--- a/config/examples/JGAurora/A5S/Configuration.h
+++ b/config/examples/JGAurora/A5S/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_JGAURORA_A5S_A1
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "JGAurora A5S"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1906,31 +1904,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1964,15 +1943,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1985,6 +1955,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/MakerParts/Configuration.h b/config/examples/MakerParts/Configuration.h
index 2e72125d93..4553972145 100644
--- a/config/examples/MakerParts/Configuration.h
+++ b/config/examples/MakerParts/Configuration.h
@@ -149,18 +149,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_DUO_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "MakerParts 3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
#define MACHINE_UUID "4250d842-4943-4601-acca-95ef77b8a4f1"
// @section extruder
@@ -1929,31 +1927,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1987,15 +1966,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2008,6 +1978,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Malyan/M150/Configuration.h b/config/examples/Malyan/M150/Configuration.h
index d50adb54fe..21360a837c 100644
--- a/config/examples/Malyan/M150/Configuration.h
+++ b/config/examples/Malyan/M150/Configuration.h
@@ -134,18 +134,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_MALYAN
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Malyan M150"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1937,31 +1935,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1995,15 +1974,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2016,6 +1986,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Malyan/M200/Configuration.h b/config/examples/Malyan/M200/Configuration.h
index 421016a6fe..d4dde8e9a2 100644
--- a/config/examples/Malyan/M200/Configuration.h
+++ b/config/examples/Malyan/M200/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MALYAN_M200
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Malyan M200"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1908,31 +1906,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1966,15 +1945,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1987,6 +1957,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Micromake/C1/basic/Configuration.h b/config/examples/Micromake/C1/basic/Configuration.h
index 7efa1be86a..f9323f729a 100644
--- a/config/examples/Micromake/C1/basic/Configuration.h
+++ b/config/examples/Micromake/C1/basic/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MAKEBOARD_MINI
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Micromake C1"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1913,31 +1911,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Micromake/C1/enhanced/Configuration.h b/config/examples/Micromake/C1/enhanced/Configuration.h
index 458fcd6a92..7cfb056972 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MAKEBOARD_MINI
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Micromake C1"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1913,31 +1911,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Mks/Robin/Configuration.h b/config/examples/Mks/Robin/Configuration.h
index 4491cfc8ac..6665f5a356 100644
--- a/config/examples/Mks/Robin/Configuration.h
+++ b/config/examples/Mks/Robin/Configuration.h
@@ -130,18 +130,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_ROBIN
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "MKS Robin"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1911,31 +1909,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1969,15 +1948,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1990,6 +1960,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Mks/Sbase/Configuration.h b/config/examples/Mks/Sbase/Configuration.h
index 822e6edd55..aadd430991 100644
--- a/config/examples/Mks/Sbase/Configuration.h
+++ b/config/examples/Mks/Sbase/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_SBASE
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Printrbot/PrintrboardG2/Configuration.h b/config/examples/Printrbot/PrintrboardG2/Configuration.h
index f5b2395086..e8d45a23b7 100644
--- a/config/examples/Printrbot/PrintrboardG2/Configuration.h
+++ b/config/examples/Printrbot/PrintrboardG2/Configuration.h
@@ -130,18 +130,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_PRINTRBOARD_G2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1917,31 +1915,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1975,15 +1954,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1996,6 +1966,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/RapideLite/RL200/Configuration.h b/config/examples/RapideLite/RL200/Configuration.h
index 2577284098..9ff0757a9e 100644
--- a/config/examples/RapideLite/RL200/Configuration.h
+++ b/config/examples/RapideLite/RL200/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RL200
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Rapide Lite 200"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/RepRapPro/Huxley/Configuration.h b/config/examples/RepRapPro/Huxley/Configuration.h
index 23280e772b..0f25160b4c 100644
--- a/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/config/examples/RepRapPro/Huxley/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_SANGUINOLOLU_12
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Huxley"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1958,31 +1956,12 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2016,15 +1995,6 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2037,6 +2007,43 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/RepRapWorld/Megatronics/Configuration.h b/config/examples/RepRapWorld/Megatronics/Configuration.h
index 7503b9f063..f6fc590759 100644
--- a/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MEGATRONICS_3
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/RigidBot/Configuration.h b/config/examples/RigidBot/Configuration.h
index fe019650e2..69de1a747c 100644
--- a/config/examples/RigidBot/Configuration.h
+++ b/config/examples/RigidBot/Configuration.h
@@ -129,8 +129,7 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
// for Rigidbot version 1 : #define MOTHERBOARD BOARD_RIGIDBOARD
// for Rigidbot Version 2 : #define MOTHERBOARD BOARD_RIGIDBOARD_V2
@@ -138,12 +137,11 @@
#define MOTHERBOARD BOARD_RIGIDBOARD_V2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Rigidbot"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/SCARA/Configuration.h b/config/examples/SCARA/Configuration.h
index 867266673f..a32290b9ee 100644
--- a/config/examples/SCARA/Configuration.h
+++ b/config/examples/SCARA/Configuration.h
@@ -156,18 +156,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "SCARA"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1918,31 +1916,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1976,15 +1955,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1997,6 +1967,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/STM32/Black_STM32F407VET6/Configuration.h b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
index 3e42b5609b..26c2382aac 100644
--- a/config/examples/STM32/Black_STM32F407VET6/Configuration.h
+++ b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BLACK_STM32F407VE
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/STM32/STM32F10/Configuration.h b/config/examples/STM32/STM32F10/Configuration.h
index b278f59e73..8a8892e8c2 100644
--- a/config/examples/STM32/STM32F10/Configuration.h
+++ b/config/examples/STM32/STM32F10/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_STM32F1R
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CTC i3 Pro B"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1911,31 +1909,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1969,15 +1948,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1990,6 +1960,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/STM32/STM32F4/Configuration.h b/config/examples/STM32/STM32F4/Configuration.h
index 3bb0eb48ae..38570dd24e 100644
--- a/config/examples/STM32/STM32F4/Configuration.h
+++ b/config/examples/STM32/STM32F4/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_STM32F4
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/STM32/stm32f103ret6/Configuration.h b/config/examples/STM32/stm32f103ret6/Configuration.h
index ceef3955ac..b5143c51fc 100644
--- a/config/examples/STM32/stm32f103ret6/Configuration.h
+++ b/config/examples/STM32/stm32f103ret6/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_STM32F1R
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "CTC i3 Pro B"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1911,31 +1909,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1969,15 +1948,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1990,6 +1960,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Sanguinololu/Configuration.h b/config/examples/Sanguinololu/Configuration.h
index 2f5bba8398..1481a21fb8 100644
--- a/config/examples/Sanguinololu/Configuration.h
+++ b/config/examples/Sanguinololu/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_SANGUINOLOLU_12
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Sanguinololu"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1940,31 +1938,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1998,15 +1977,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2019,6 +1989,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tevo/Tarantula Pro/Configuration.h b/config/examples/Tevo/Tarantula Pro/Configuration.h
index a95331798a..7887d48983 100644
--- a/config/examples/Tevo/Tarantula Pro/Configuration.h
+++ b/config/examples/Tevo/Tarantula Pro/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Tarantula Pro"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1901,31 +1899,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1959,15 +1938,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1980,6 +1950,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/TheBorg/Configuration.h b/config/examples/TheBorg/Configuration.h
index acbe231879..1ab52ef2fc 100644
--- a/config/examples/TheBorg/Configuration.h
+++ b/config/examples/TheBorg/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_THE_BORG
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/TinyBoy2/Configuration.h b/config/examples/TinyBoy2/Configuration.h
index 53d991b34d..198e7db5cf 100644
--- a/config/examples/TinyBoy2/Configuration.h
+++ b/config/examples/TinyBoy2/Configuration.h
@@ -145,14 +145,12 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#if ENABLED(TB2_L10)
#define CUSTOM_MACHINE_NAME "TinyBoy2 L10"
#elif ENABLED(TB2_L16)
@@ -161,8 +159,8 @@
#error "Please select TB2_L10 or TB2_L16"
#endif
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1965,31 +1963,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2023,15 +2002,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2044,6 +2014,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tronxy/X1/Configuration.h b/config/examples/Tronxy/X1/Configuration.h
index 34801961a3..37a55c7f56 100644
--- a/config/examples/Tronxy/X1/Configuration.h
+++ b/config/examples/Tronxy/X1/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Tronxy X1"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tronxy/X3A/Configuration.h b/config/examples/Tronxy/X3A/Configuration.h
index dee5ea2022..14123ed127 100644
--- a/config/examples/Tronxy/X3A/Configuration.h
+++ b/config/examples/Tronxy/X3A/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI //63
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Tronxy X3A"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1913,31 +1911,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1971,15 +1950,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1992,6 +1962,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tronxy/X5S-2E/Configuration.h b/config/examples/Tronxy/X5S-2E/Configuration.h
index bd417a8860..204af78003 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_TRONXY_V3_1_0
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Tronxy X5S-2E"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1930,31 +1928,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1988,15 +1967,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2009,6 +1979,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tronxy/X5S/Configuration.h b/config/examples/Tronxy/X5S/Configuration.h
index 42a9f1af3d..789becec22 100644
--- a/config/examples/Tronxy/X5S/Configuration.h
+++ b/config/examples/Tronxy/X5S/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI_TRONXY
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Tronxy X5S"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Tronxy/XY100/Configuration.h b/config/examples/Tronxy/XY100/Configuration.h
index f918285101..3cb2ed18b6 100644
--- a/config/examples/Tronxy/XY100/Configuration.h
+++ b/config/examples/Tronxy/XY100/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MELZI
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "TronXY XY100"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1920,31 +1918,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1978,15 +1957,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1999,6 +1969,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/UltiMachine/Archim1/Configuration.h b/config/examples/UltiMachine/Archim1/Configuration.h
index e6927cbac6..8d0b3736ca 100644
--- a/config/examples/UltiMachine/Archim1/Configuration.h
+++ b/config/examples/UltiMachine/Archim1/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ARCHIM1
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/UltiMachine/Archim2/Configuration.h b/config/examples/UltiMachine/Archim2/Configuration.h
index 4fa05efe79..73fe0f940e 100644
--- a/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/config/examples/UltiMachine/Archim2/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ARCHIM2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/VORONDesign/Configuration.h b/config/examples/VORONDesign/Configuration.h
index d96ef5b2f3..60eee38596 100644
--- a/config/examples/VORONDesign/Configuration.h
+++ b/config/examples/VORONDesign/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_VORON
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "VORON 2.0"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1918,31 +1916,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1976,15 +1955,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1997,6 +1967,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Velleman/K8200/Configuration.h b/config/examples/Velleman/K8200/Configuration.h
index 5238625a29..048d81da78 100644
--- a/config/examples/Velleman/K8200/Configuration.h
+++ b/config/examples/Velleman/K8200/Configuration.h
@@ -145,18 +145,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_K8200
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "K8200"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
#if ENABLED(K8200_VM8201)
#define MACHINE_UUID "2b7dea3b-844e-4ab1-aa96-bb6406607d6e" // K8200 standard config with VM8201 (Display)
#else
@@ -1942,31 +1940,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2000,15 +1979,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
diff --git a/config/examples/Velleman/K8400/Configuration.h b/config/examples/Velleman/K8400/Configuration.h
index 14301ba36a..c9b3f700ef 100644
--- a/config/examples/Velleman/K8400/Configuration.h
+++ b/config/examples/Velleman/K8400/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_K8400
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Velleman/K8400/Dual-head/Configuration.h b/config/examples/Velleman/K8400/Dual-head/Configuration.h
index d1b0ba448f..b01d0627bb 100644
--- a/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_K8400
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/WASP/PowerWASP/Configuration.h b/config/examples/WASP/PowerWASP/Configuration.h
index f42ef0b3ab..71380f1abd 100644
--- a/config/examples/WASP/PowerWASP/Configuration.h
+++ b/config/examples/WASP/PowerWASP/Configuration.h
@@ -148,18 +148,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ULTIMAKER
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
-#define CUSTOM_MACHINE_NAME " PowerWASP is "
+// Name displayed in the LCD "Ready" message and Info menu
+#define CUSTOM_MACHINE_NAME "PowerWASP"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1928,31 +1926,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1986,15 +1965,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2007,6 +1977,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration.h b/config/examples/Wanhao/Duplicator 6/Configuration.h
index ac39306dba..82806cb83c 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration.h
+++ b/config/examples/Wanhao/Duplicator 6/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ULTIMAIN_2
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Duplicator 6"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1919,34 +1917,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-#define U8GLIB_SSD1306
-#define LCD_WIDTH 22
-#define LCD_HEIGHT 5
-#define LCD_RESET_PIN 5
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1980,15 +1956,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2001,6 +1968,46 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+#define U8GLIB_SSD1306
+#define LCD_WIDTH 22
+#define LCD_HEIGHT 5
+#define LCD_RESET_PIN 5
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
new file mode 100644
index 0000000000..ce28558294
--- /dev/null
+++ b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
@@ -0,0 +1,2178 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 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 .
+ *
+ */
+#pragma once
+
+/**
+ * Configuration.h
+ *
+ * Basic settings such as:
+ *
+ * - Type of electronics
+ * - Type of temperature sensor
+ * - Printer geometry
+ * - Endstop configuration
+ * - LCD controller
+ * - Extra features
+ *
+ * Advanced settings can be found in Configuration_adv.h
+ *
+ */
+#define CONFIGURATION_H_VERSION 020000
+
+//===========================================================================
+//============================= Getting Started =============================
+//===========================================================================
+
+/**
+ * Here are some standard links for getting your machine calibrated:
+ *
+ * http://reprap.org/wiki/Calibration
+ * http://youtu.be/wAL9d7FgInk
+ * http://calculator.josefprusa.cz
+ * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
+ * http://www.thingiverse.com/thing:5573
+ * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
+ * http://www.thingiverse.com/thing:298812
+ */
+
+//===========================================================================
+//============================= DELTA Printer ===============================
+//===========================================================================
+// For a Delta printer start with one of the configuration files in the
+// config/examples/delta directory and customize for your machine.
+//
+
+//===========================================================================
+//============================= SCARA Printer ===============================
+//===========================================================================
+// For a SCARA printer start with the configuration files in
+// config/examples/SCARA and customize for your machine.
+//
+
+// @section info
+
+// User-specified version info of this build to display in [Pronterface, etc] terminal window during
+// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
+// build by the user have been successfully uploaded into firmware.
+#define STRING_CONFIG_H_AUTHOR "(thisiskeithb, Wanhao i3 Mini)" // Who made the changes.
+#define SHOW_BOOTSCREEN
+#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1
+//#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2
+
+/**
+ * *** VENDORS PLEASE READ ***
+ *
+ * Marlin allows you to add a custom boot image for Graphical LCDs.
+ * With this option Marlin will first show your custom screen followed
+ * by the standard Marlin logo with version number and web URL.
+ *
+ * We encourage you to take advantage of this new feature and we also
+ * respectfully request that you retain the unmodified Marlin boot screen.
+ */
+
+// Enable to show the bitmap in Marlin/_Bootscreen.h on startup.
+//#define SHOW_CUSTOM_BOOTSCREEN
+
+// Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen.
+//#define CUSTOM_STATUS_SCREEN_IMAGE
+
+// @section machine
+
+/**
+ * Select the serial port on the board to use for communication with the host.
+ * This allows the connection of wireless adapters (for instance) to non-default port pins.
+ * Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
+ *
+ * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
+ */
+#define SERIAL_PORT 0
+
+/**
+ * Select a secondary serial port on the board to use for communication with the host.
+ * This allows the connection of wireless adapters (for instance) to non-default port pins.
+ * Serial port -1 is the USB emulated serial port, if available.
+ *
+ * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
+ */
+//#define SERIAL_PORT_2 -1
+
+/**
+ * This setting determines the communication speed of the printer.
+ *
+ * 250000 works in most cases, but you might try a lower speed if
+ * you commonly experience drop-outs during host printing.
+ * You may try up to 1000000 to speed up SD file transfer.
+ *
+ * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
+ */
+#define BAUDRATE 250000
+
+// Enable the Bluetooth serial interface on AT90USB devices
+//#define BLUETOOTH
+
+// Choose the name from boards.h that matches your setup
+#ifndef MOTHERBOARD
+ #define MOTHERBOARD BOARD_WANHAO_ONEPLUS
+#endif
+
+// Name displayed in the LCD "Ready" message and Info menu
+#define CUSTOM_MACHINE_NAME "i3 Mini"
+
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
+//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
+
+// @section extruder
+
+// This defines the number of extruders
+// :[1, 2, 3, 4, 5, 6]
+#define EXTRUDERS 1
+
+// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
+#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75
+
+// For Cyclops or any "multi-extruder" that shares a single nozzle.
+//#define SINGLENOZZLE
+
+/**
+ * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
+ *
+ * This device allows one stepper driver on a control board to drive
+ * two to eight stepper motors, one at a time, in a manner suitable
+ * for extruders.
+ *
+ * This option only allows the multiplexer to switch on tool-change.
+ * Additional options to configure custom E moves are pending.
+ */
+//#define MK2_MULTIPLEXER
+#if ENABLED(MK2_MULTIPLEXER)
+ // Override the default DIO selector pins here, if needed.
+ // Some pins files may provide defaults for these pins.
+ //#define E_MUX0_PIN 40 // Always Required
+ //#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
+ //#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
+#endif
+
+/**
+ * Prusa Multi-Material Unit v2
+ *
+ * Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
+ * Requires EXTRUDERS = 5
+ *
+ * For additional configuration see Configuration_adv.h
+ */
+//#define PRUSA_MMU2
+
+// A dual extruder that uses a single stepper motor
+//#define SWITCHING_EXTRUDER
+#if ENABLED(SWITCHING_EXTRUDER)
+ #define SWITCHING_EXTRUDER_SERVO_NR 0
+ #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3]
+ #if EXTRUDERS > 3
+ #define SWITCHING_EXTRUDER_E23_SERVO_NR 1
+ #endif
+#endif
+
+// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
+//#define SWITCHING_NOZZLE
+#if ENABLED(SWITCHING_NOZZLE)
+ #define SWITCHING_NOZZLE_SERVO_NR 0
+ //#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second
+ #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
+#endif
+
+/**
+ * Two separate X-carriages with extruders that connect to a moving part
+ * via a solenoid docking mechanism. Requires SOL1_PIN and SOL2_PIN.
+ */
+//#define PARKING_EXTRUDER
+
+/**
+ * Two separate X-carriages with extruders that connect to a moving part
+ * via a magnetic docking mechanism using movements and no solenoid
+ *
+ * project : https://www.thingiverse.com/thing:3080893
+ * movements : https://youtu.be/0xCEiG9VS3k
+ * https://youtu.be/Bqbcs0CU2FE
+ */
+//#define MAGNETIC_PARKING_EXTRUDER
+
+#if EITHER(PARKING_EXTRUDER, MAGNETIC_PARKING_EXTRUDER)
+
+ #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders
+ #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // (mm) Distance to move beyond the parking point to grab the extruder
+ //#define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381
+
+ #if ENABLED(PARKING_EXTRUDER)
+
+ #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage
+ #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil
+ #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // (ms) Delay for magnetic field. No delay if 0 or not defined.
+ //#define MANUAL_SOLENOID_CONTROL // Manual control of docking solenoids with M380 S / M381
+
+ #elif ENABLED(MAGNETIC_PARKING_EXTRUDER)
+
+ #define MPE_FAST_SPEED 9000 // (mm/m) Speed for travel before last distance point
+ #define MPE_SLOW_SPEED 4500 // (mm/m) Speed for last distance travel to park and couple
+ #define MPE_TRAVEL_DISTANCE 10 // (mm) Last distance point
+ #define MPE_COMPENSATION 0 // Offset Compensation -1 , 0 , 1 (multiplier) only for coupling
+
+ #endif
+
+#endif
+
+/**
+ * Switching Toolhead
+ *
+ * Support for swappable and dockable toolheads, such as
+ * the E3D Tool Changer. Toolheads are locked with a servo.
+ */
+//#define SWITCHING_TOOLHEAD
+
+/**
+ * Magnetic Switching Toolhead
+ *
+ * Support swappable and dockable toolheads with a magnetic
+ * docking mechanism using movement and no servo.
+ */
+//#define MAGNETIC_SWITCHING_TOOLHEAD
+
+/**
+ * Electromagnetic Switching Toolhead
+ *
+ * Parking for CoreXY / HBot kinematics.
+ * Toolheads are parked at one edge and held with an electromagnet.
+ * Supports more than 2 Toolheads. See https://youtu.be/JolbsAKTKf4
+ */
+//#define ELECTROMAGNETIC_SWITCHING_TOOLHEAD
+
+#if ANY(SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
+ #define SWITCHING_TOOLHEAD_Y_POS 235 // (mm) Y position of the toolhead dock
+ #define SWITCHING_TOOLHEAD_Y_SECURITY 10 // (mm) Security distance Y axis
+ #define SWITCHING_TOOLHEAD_Y_CLEAR 60 // (mm) Minimum distance from dock for unobstructed X axis
+ #define SWITCHING_TOOLHEAD_X_POS { 215, 0 } // (mm) X positions for parking the extruders
+ #if ENABLED(SWITCHING_TOOLHEAD)
+ #define SWITCHING_TOOLHEAD_SERVO_NR 2 // Index of the servo connector
+ #define SWITCHING_TOOLHEAD_SERVO_ANGLES { 0, 180 } // (degrees) Angles for Lock, Unlock
+ #elif ENABLED(MAGNETIC_SWITCHING_TOOLHEAD)
+ #define SWITCHING_TOOLHEAD_Y_RELEASE 5 // (mm) Security distance Y axis
+ #define SWITCHING_TOOLHEAD_X_SECURITY -35 // (mm) Security distance X axis
+ #elif ENABLED(ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
+ #define SWITCHING_TOOLHEAD_Z_HOP 2 // (mm) Z raise for switching
+ #endif
+#endif
+
+/**
+ * "Mixing Extruder"
+ * - Adds G-codes M163 and M164 to set and "commit" the current mix factors.
+ * - Extends the stepping routines to move multiple steppers in proportion to the mix.
+ * - Optional support for Repetier Firmware's 'M164 S' supporting virtual tools.
+ * - This implementation supports up to two mixing extruders.
+ * - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation).
+ */
+//#define MIXING_EXTRUDER
+#if ENABLED(MIXING_EXTRUDER)
+ #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder
+ #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164
+ //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands
+ //#define GRADIENT_MIX // Support for gradient mixing with M166 and LCD
+ #if ENABLED(GRADIENT_MIX)
+ //#define GRADIENT_VTOOL // Add M166 T to use a V-tool index as a Gradient alias
+ #endif
+#endif
+
+// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
+// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
+// For the other hotends it is their distance from the extruder 0 hotend.
+//#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
+//#define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle
+//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle
+
+// @section machine
+
+/**
+ * Power Supply Control
+ *
+ * Enable and connect the power supply to the PS_ON_PIN.
+ * Specify whether the power supply is active HIGH or active LOW.
+ */
+//#define PSU_CONTROL
+//#define PSU_NAME "Power Supply"
+
+#if ENABLED(PSU_CONTROL)
+ #define PSU_ACTIVE_HIGH false // Set 'false' for ATX (1), 'true' for X-Box (2)
+
+ //#define PS_DEFAULT_OFF // Keep power off until enabled directly with M80
+
+ //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
+ #if ENABLED(AUTO_POWER_CONTROL)
+ #define AUTO_POWER_FANS // Turn on PSU if fans need power
+ #define AUTO_POWER_E_FANS
+ #define AUTO_POWER_CONTROLLERFAN
+ #define AUTO_POWER_CHAMBER_FAN
+ //#define AUTO_POWER_E_TEMP 50 // (°C) Turn on PSU over this temperature
+ //#define AUTO_POWER_CHAMBER_TEMP 30 // (°C) Turn on PSU over this temperature
+ #define POWER_TIMEOUT 30
+ #endif
+#endif
+
+// @section temperature
+
+//===========================================================================
+//============================= Thermal Settings ============================
+//===========================================================================
+
+/**
+ * --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
+ *
+ * Temperature sensors available:
+ *
+ * -4 : thermocouple with AD8495
+ * -3 : thermocouple with MAX31855 (only for sensor 0)
+ * -2 : thermocouple with MAX6675 (only for sensor 0)
+ * -1 : thermocouple with AD595
+ * 0 : not used
+ * 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
+ * 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
+ * 3 : Mendel-parts thermistor (4.7k pullup)
+ * 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
+ * 5 : 100K thermistor - ATC Semitec 104GT-2/104NT-4-R025H42G (Used in ParCan & J-Head) (4.7k pullup)
+ * 501 : 100K Zonestar (Tronxy X3A) Thermistor
+ * 512 : 100k RPW-Ultra hotend thermistor (4.7k pullup)
+ * 6 : 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
+ * 7 : 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
+ * 71 : 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
+ * 8 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
+ * 9 : 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
+ * 10 : 100k RS thermistor 198-961 (4.7k pullup)
+ * 11 : 100k beta 3950 1% thermistor (4.7k pullup)
+ * 12 : 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
+ * 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
+ * 15 : 100k thermistor calibration for JGAurora A5 hotend
+ * 18 : ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327
+ * 20 : the PT100 circuit found in the Ultimainboard V2.x
+ * 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
+ * 61 : 100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup
+ * 66 : 4.7M High Temperature thermistor from Dyze Design
+ * 67 : 450C thermistor from SliceEngineering
+ * 70 : the 100K thermistor found in the bq Hephestos 2
+ * 75 : 100k Generic Silicon Heat Pad with NTC 100K MGB18-104F39050L32 thermistor
+ *
+ * 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k.
+ * (but gives greater accuracy and more stable PID)
+ * 51 : 100k thermistor - EPCOS (1k pullup)
+ * 52 : 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
+ * 55 : 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
+ *
+ * 1047 : Pt1000 with 4k7 pullup
+ * 1010 : Pt1000 with 1k pullup (non standard)
+ * 147 : Pt100 with 4k7 pullup
+ * 110 : Pt100 with 1k pullup (non standard)
+ *
+ * 1000 : Custom - Specify parameters in Configuration_adv.h
+ *
+ * Use these for Testing or Development purposes. NEVER for production machine.
+ * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
+ * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
+ *
+ * :{ '0':"Not used", '1':"100k / 4.7k - EPCOS", '2':"200k / 4.7k - ATC Semitec 204GT-2", '3':"Mendel-parts / 4.7k", '4':"10k !! do not use for a hotend. Bad resolution at high temp. !!", '5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '501':"100K Zonestar (Tronxy X3A)", '512':"100k RPW-Ultra hotend thermistor", '6':"100k / 4.7k EPCOS - Not as accurate as Table 1", '7':"100k / 4.7k Honeywell 135-104LAG-J01", '8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10':"100k / 4.7k RS 198-961", '11':"100k / 4.7k beta 3950 1%", '12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '18':"ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327" '20':"PT100 (Ultimainboard V2.x)", '51':"100k / 1k - EPCOS", '52':"200k / 1k - ATC Semitec 204GT-2", '55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '61':"100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup", '66':"Dyze Design 4.7M High Temperature thermistor", '67':"Slice Engineering 450C High Temperature thermistor", '70':"the 100K thermistor found in the bq Hephestos 2", '71':"100k / 4.7k Honeywell 135-104LAF-J01", '147':"Pt100 / 4.7k", '1047':"Pt1000 / 4.7k", '110':"Pt100 / 1k (non-standard)", '1010':"Pt1000 / 1k (non standard)", '-4':"Thermocouple + AD8495", '-3':"Thermocouple + MAX31855 (only for sensor 0)", '-2':"Thermocouple + MAX6675 (only for sensor 0)", '-1':"Thermocouple + AD595", '998':"Dummy 1", '999':"Dummy 2", '1000':"Custom thermistor params" }
+ */
+#define TEMP_SENSOR_0 13
+#define TEMP_SENSOR_1 0
+#define TEMP_SENSOR_2 0
+#define TEMP_SENSOR_3 0
+#define TEMP_SENSOR_4 0
+#define TEMP_SENSOR_5 0
+#define TEMP_SENSOR_BED 0
+#define TEMP_SENSOR_CHAMBER 0
+
+// Dummy thermistor constant temperature readings, for use with 998 and 999
+#define DUMMY_THERMISTOR_998_VALUE 25
+#define DUMMY_THERMISTOR_999_VALUE 100
+
+// Use temp sensor 1 as a redundant sensor with sensor 0. If the readings
+// from the two sensors differ too much the print will be aborted.
+//#define TEMP_SENSOR_1_AS_REDUNDANT
+#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
+
+#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109
+#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
+#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
+
+#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190
+#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
+#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
+
+// Below this temperature the heater will be switched off
+// because it probably indicates a broken thermistor wire.
+#define HEATER_0_MINTEMP 5
+#define HEATER_1_MINTEMP 5
+#define HEATER_2_MINTEMP 5
+#define HEATER_3_MINTEMP 5
+#define HEATER_4_MINTEMP 5
+#define HEATER_5_MINTEMP 5
+#define BED_MINTEMP 5
+
+// Above this temperature the heater will be switched off.
+// This can protect components from overheating, but NOT from shorts and failures.
+// (Use MINTEMP for thermistor short/failure protection.)
+#define HEATER_0_MAXTEMP 275
+#define HEATER_1_MAXTEMP 275
+#define HEATER_2_MAXTEMP 275
+#define HEATER_3_MAXTEMP 275
+#define HEATER_4_MAXTEMP 275
+#define HEATER_5_MAXTEMP 275
+#define BED_MAXTEMP 150
+
+//===========================================================================
+//============================= PID Settings ================================
+//===========================================================================
+// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning
+
+// Comment the following line to disable PID and enable bang-bang.
+#define PIDTEMP
+#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
+#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
+#define PID_K1 0.95 // Smoothing factor within any PID loop
+#if ENABLED(PIDTEMP)
+ #define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)
+ #define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
+ //#define PID_DEBUG // Sends debug data to the serial port.
+ //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
+ //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
+ //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
+ // Set/get with gcode: M301 E[extruder number, 0-2]
+ #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
+ // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
+
+ // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
+
+ // Wanhao Duplicator i3 Mini & rebrands
+ #define DEFAULT_Kp 22.2
+ #define DEFAULT_Ki 1.08
+ #define DEFAULT_Kd 114
+
+ // MakerGear
+ //#define DEFAULT_Kp 7.0
+ //#define DEFAULT_Ki 0.1
+ //#define DEFAULT_Kd 12
+
+ // Mendel Parts V9 on 12V
+ //#define DEFAULT_Kp 63.0
+ //#define DEFAULT_Ki 2.25
+ //#define DEFAULT_Kd 440
+
+#endif // PIDTEMP
+
+//===========================================================================
+//====================== PID > Bed Temperature Control ======================
+//===========================================================================
+
+/**
+ * PID Bed Heating
+ *
+ * If this option is enabled set PID constants below.
+ * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis.
+ *
+ * The PID frequency will be the same as the extruder PWM.
+ * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
+ * which is fine for driving a square wave into a resistive load and does not significantly
+ * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W
+ * heater. If your configuration is significantly different than this and you don't understand
+ * the issues involved, don't use bed PID until someone else verifies that your hardware works.
+ */
+//#define PIDTEMPBED
+
+//#define BED_LIMIT_SWITCHING
+
+/**
+ * Max Bed Power
+ * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis).
+ * When set to any value below 255, enables a form of PWM to the bed that acts like a divider
+ * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED)
+ */
+#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
+
+#if ENABLED(PIDTEMPBED)
+
+ //#define PID_BED_DEBUG // Sends debug data to the serial port.
+
+ //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
+ //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
+ #define DEFAULT_bedKp 10.00
+ #define DEFAULT_bedKi .023
+ #define DEFAULT_bedKd 305.4
+
+ //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
+ //from pidautotune
+ //#define DEFAULT_bedKp 97.1
+ //#define DEFAULT_bedKi 1.41
+ //#define DEFAULT_bedKd 1675.16
+
+ // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
+#endif // PIDTEMPBED
+
+// @section extruder
+
+/**
+ * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP.
+ * Add M302 to set the minimum extrusion temperature and/or turn
+ * cold extrusion prevention on and off.
+ *
+ * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
+ */
+#define PREVENT_COLD_EXTRUSION
+#define EXTRUDE_MINTEMP 170
+
+/**
+ * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH.
+ * Note: For Bowden Extruders make this large enough to allow load/unload.
+ */
+#define PREVENT_LENGTHY_EXTRUDE
+#define EXTRUDE_MAXLENGTH 200
+
+//===========================================================================
+//======================== Thermal Runaway Protection =======================
+//===========================================================================
+
+/**
+ * Thermal Protection provides additional protection to your printer from damage
+ * and fire. Marlin always includes safe min and max temperature ranges which
+ * protect against a broken or disconnected thermistor wire.
+ *
+ * The issue: If a thermistor falls out, it will report the much lower
+ * temperature of the air in the room, and the the firmware will keep
+ * the heater on.
+ *
+ * If you get "Thermal Runaway" or "Heating failed" errors the
+ * details can be tuned in Configuration_adv.h
+ */
+
+#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
+#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
+#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber
+
+//===========================================================================
+//============================= Mechanical Settings =========================
+//===========================================================================
+
+// @section machine
+
+// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics
+// either in the usual order or reversed
+//#define COREXY
+//#define COREXZ
+//#define COREYZ
+//#define COREYX
+//#define COREZX
+//#define COREZY
+
+//===========================================================================
+//============================== Endstop Settings ===========================
+//===========================================================================
+
+// @section homing
+
+// Specify here all the endstop connectors that are connected to any endstop or probe.
+// Almost all printers will be using one per axis. Probes will use one or more of the
+// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
+//#define USE_XMIN_PLUG
+#define USE_YMIN_PLUG
+#define USE_ZMIN_PLUG
+#define USE_XMAX_PLUG
+//#define USE_YMAX_PLUG
+//#define USE_ZMAX_PLUG
+
+// Enable pullup for all endstops to prevent a floating state
+#define ENDSTOPPULLUPS
+#if DISABLED(ENDSTOPPULLUPS)
+ // Disable ENDSTOPPULLUPS to set pullups individually
+ //#define ENDSTOPPULLUP_XMAX
+ //#define ENDSTOPPULLUP_YMAX
+ //#define ENDSTOPPULLUP_ZMAX
+ //#define ENDSTOPPULLUP_XMIN
+ //#define ENDSTOPPULLUP_YMIN
+ //#define ENDSTOPPULLUP_ZMIN
+ //#define ENDSTOPPULLUP_ZMIN_PROBE
+#endif
+
+// Enable pulldown for all endstops to prevent a floating state
+//#define ENDSTOPPULLDOWNS
+#if DISABLED(ENDSTOPPULLDOWNS)
+ // Disable ENDSTOPPULLDOWNS to set pulldowns individually
+ //#define ENDSTOPPULLDOWN_XMAX
+ //#define ENDSTOPPULLDOWN_YMAX
+ //#define ENDSTOPPULLDOWN_ZMAX
+ //#define ENDSTOPPULLDOWN_XMIN
+ //#define ENDSTOPPULLDOWN_YMIN
+ //#define ENDSTOPPULLDOWN_ZMIN
+ //#define ENDSTOPPULLDOWN_ZMIN_PROBE
+#endif
+
+// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
+#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
+#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.
+
+/**
+ * Stepper Drivers
+ *
+ * These settings allow Marlin to tune stepper driver timing and enable advanced options for
+ * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
+ *
+ * A4988 is assumed for unspecified drivers.
+ *
+ * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
+ * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
+ * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
+ * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
+ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
+ */
+#define X_DRIVER_TYPE A4988
+#define Y_DRIVER_TYPE A4988
+#define Z_DRIVER_TYPE A4988
+//#define X2_DRIVER_TYPE A4988
+//#define Y2_DRIVER_TYPE A4988
+//#define Z2_DRIVER_TYPE A4988
+//#define Z3_DRIVER_TYPE A4988
+#define E0_DRIVER_TYPE A4988
+//#define E1_DRIVER_TYPE A4988
+//#define E2_DRIVER_TYPE A4988
+//#define E3_DRIVER_TYPE A4988
+//#define E4_DRIVER_TYPE A4988
+//#define E5_DRIVER_TYPE A4988
+
+// Enable this feature if all enabled endstop pins are interrupt-capable.
+// This will remove the need to poll the interrupt pins, saving many CPU cycles.
+//#define ENDSTOP_INTERRUPTS_FEATURE
+
+/**
+ * Endstop Noise Threshold
+ *
+ * Enable if your probe or endstops falsely trigger due to noise.
+ *
+ * - Higher values may affect repeatability or accuracy of some bed probes.
+ * - To fix noise install a 100nF ceramic capacitor inline with the switch.
+ * - This feature is not required for common micro-switches mounted on PCBs
+ * based on the Makerbot design, which already have the 100nF capacitor.
+ *
+ * :[2,3,4,5,6,7]
+ */
+//#define ENDSTOP_NOISE_THRESHOLD 2
+
+//=============================================================================
+//============================== Movement Settings ============================
+//=============================================================================
+// @section motion
+
+/**
+ * Default Settings
+ *
+ * These settings can be reset by M502
+ *
+ * Note that if EEPROM is enabled, saved values will override these.
+ */
+
+/**
+ * With this option each E stepper can have its own factors for the
+ * following movement settings. If fewer factors are given than the
+ * total number of extruders, the last value applies to the rest.
+ */
+//#define DISTINCT_E_FACTORS
+
+/**
+ * Default Axis Steps Per Unit (steps/mm)
+ * Override with M92
+ * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
+ */
+#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 94 }
+
+/**
+ * Default Max Feed Rate (mm/s)
+ * Override with M203
+ * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
+ */
+#define DEFAULT_MAX_FEEDRATE { 400, 400, 15, 50 }
+
+/**
+ * Default Max Acceleration (change/s) change = mm/s
+ * (Maximum start speed for accelerated moves)
+ * Override with M201
+ * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
+ */
+#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 3000 }
+
+/**
+ * Default Acceleration (change/s) change = mm/s
+ * Override with M204
+ *
+ * M204 P Acceleration
+ * M204 R Retract Acceleration
+ * M204 T Travel Acceleration
+ */
+#define DEFAULT_ACCELERATION 800 // X, Y, Z and E acceleration for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 800 // E acceleration for retracts
+#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration for travel (non printing) moves
+
+/**
+ * Junction Deviation
+ *
+ * Use Junction Deviation instead of traditional Jerk Limiting
+ *
+ * See:
+ * https://reprap.org/forum/read.php?1,739819
+ * http://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
+ */
+//#define JUNCTION_DEVIATION
+#if ENABLED(JUNCTION_DEVIATION)
+ #define JUNCTION_DEVIATION_MM 0.02 // (mm) Distance from real junction edge
+#endif
+
+/**
+ * Default Jerk (mm/s)
+ * Override with M205 X Y Z E
+ *
+ * "Jerk" specifies the minimum speed change that requires acceleration.
+ * When changing speed and direction, if the difference is less than the
+ * value set here, it may happen instantaneously.
+ */
+#if DISABLED(JUNCTION_DEVIATION)
+ #define DEFAULT_XJERK 10.0
+ #define DEFAULT_YJERK 10.0
+ #define DEFAULT_ZJERK 0.3
+#endif
+
+#define DEFAULT_EJERK 5.0 // May be used by Linear Advance
+
+/**
+ * S-Curve Acceleration
+ *
+ * This option eliminates vibration during printing by fitting a Bézier
+ * curve to move acceleration, producing much smoother direction changes.
+ *
+ * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
+ */
+//#define S_CURVE_ACCELERATION
+
+//===========================================================================
+//============================= Z Probe Options =============================
+//===========================================================================
+// @section probes
+
+//
+// See http://marlinfw.org/docs/configuration/probes.html
+//
+
+/**
+ * Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
+ *
+ * Enable this option for a probe connected to the Z Min endstop pin.
+ */
+#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
+
+/**
+ * Z_MIN_PROBE_PIN
+ *
+ * Define this pin if the probe is not connected to Z_MIN_PIN.
+ * If not defined the default pin for the selected MOTHERBOARD
+ * will be used. Most of the time the default is what you want.
+ *
+ * - The simplest option is to use a free endstop connector.
+ * - Use 5V for powered (usually inductive) sensors.
+ *
+ * - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin:
+ * - For simple switches connect...
+ * - normally-closed switches to GND and D32.
+ * - normally-open switches to 5V and D32.
+ *
+ */
+//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default
+
+/**
+ * Probe Type
+ *
+ * Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc.
+ * Activate one of these to use Auto Bed Leveling below.
+ */
+
+/**
+ * The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
+ * Use G29 repeatedly, adjusting the Z height at each point with movement commands
+ * or (with LCD_BED_LEVELING) the LCD controller.
+ */
+//#define PROBE_MANUALLY
+//#define MANUAL_PROBE_START_Z 0.2
+
+/**
+ * A Fix-Mounted Probe either doesn't deploy or needs manual deployment.
+ * (e.g., an inductive probe or a nozzle-based probe-switch.)
+ */
+//#define FIX_MOUNTED_PROBE
+
+/**
+ * Z Servo Probe, such as an endstop switch on a rotating arm.
+ */
+//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector.
+//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
+
+/**
+ * The BLTouch probe uses a Hall effect sensor and emulates a servo.
+ */
+//#define BLTOUCH
+
+/**
+ * Touch-MI Probe by hotends.fr
+ *
+ * This probe is deployed and activated by moving the X-axis to a magnet at the edge of the bed.
+ * By default, the magnet is assumed to be on the left and activated by a home. If the magnet is
+ * on the right, enable and set TOUCH_MI_DEPLOY_XPOS to the deploy position.
+ *
+ * Also requires: BABYSTEPPING, BABYSTEP_ZPROBE_OFFSET, Z_SAFE_HOMING,
+ * and a minimum Z_HOMING_HEIGHT of 10.
+ */
+//#define TOUCH_MI_PROBE
+#if ENABLED(TOUCH_MI_PROBE)
+ #define TOUCH_MI_RETRACT_Z 0.5 // Height at which the probe retracts
+ //#define TOUCH_MI_DEPLOY_XPOS (X_MAX_BED + 2) // For a magnet on the right side of the bed
+ //#define TOUCH_MI_MANUAL_DEPLOY // For manual deploy (LCD menu)
+#endif
+
+// A probe that is deployed and stowed with a solenoid pin (SOL1_PIN)
+//#define SOLENOID_PROBE
+
+// A sled-mounted probe like those designed by Charles Bell.
+//#define Z_PROBE_SLED
+//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
+
+// A probe deployed by moving the x-axis, such as the Wilson II's rack-and-pinion probe designed by Marty Rice.
+//#define RACK_AND_PINION_PROBE
+#if ENABLED(RACK_AND_PINION_PROBE)
+ #define Z_PROBE_DEPLOY_X X_MIN_POS
+ #define Z_PROBE_RETRACT_X X_MAX_POS
+#endif
+
+//
+// For Z_PROBE_ALLEN_KEY see the Delta example configurations.
+//
+
+/**
+ * Z Probe to nozzle (X,Y) offset, relative to (0, 0).
+ * X and Y offsets must be integers.
+ *
+ * In the following example the X and Y offsets are both positive:
+ * #define X_PROBE_OFFSET_FROM_EXTRUDER 10
+ * #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
+ *
+ * +-- BACK ---+
+ * | |
+ * L | (+) P | R <-- probe (20,20)
+ * E | | I
+ * F | (-) N (+) | G <-- nozzle (10,10)
+ * T | | H
+ * | (-) | T
+ * | |
+ * O-- FRONT --+
+ * (0,0)
+ */
+#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
+#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
+#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
+
+// Certain types of probes need to stay away from edges
+#define MIN_PROBE_EDGE 10
+
+// X and Y axis travel speed (mm/m) between probes
+#define XY_PROBE_SPEED 8000
+
+// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2)
+#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
+
+// Feedrate (mm/m) for the "accurate" probe of each point
+#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
+
+/**
+ * Multiple Probing
+ *
+ * You may get improved results by probing 2 or more times.
+ * With EXTRA_PROBING the more atypical reading(s) will be disregarded.
+ *
+ * A total of 2 does fast/slow probes with a weighted average.
+ * A total of 3 or more adds more slow probes, taking the average.
+ */
+//#define MULTIPLE_PROBING 2
+//#define EXTRA_PROBING 1
+
+/**
+ * Z probes require clearance when deploying, stowing, and moving between
+ * probe points to avoid hitting the bed and other hardware.
+ * Servo-mounted probes require extra space for the arm to rotate.
+ * Inductive probes need space to keep from triggering early.
+ *
+ * Use these settings to specify the distance (mm) to raise the probe (or
+ * lower the bed). The values set here apply over and above any (negative)
+ * probe Z Offset set with Z_PROBE_OFFSET_FROM_EXTRUDER, M851, or the LCD.
+ * Only integer values >= 1 are valid here.
+ *
+ * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
+ * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
+ */
+#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
+#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
+#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
+//#define Z_AFTER_PROBING 5 // Z position after probing is done
+
+#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
+
+// For M851 give a range for adjusting the Z probe offset
+#define Z_PROBE_OFFSET_RANGE_MIN -20
+#define Z_PROBE_OFFSET_RANGE_MAX 20
+
+// Enable the M48 repeatability test to test probe accuracy
+//#define Z_MIN_PROBE_REPEATABILITY_TEST
+
+// Before deploy/stow pause for user confirmation
+//#define PAUSE_BEFORE_DEPLOY_STOW
+#if ENABLED(PAUSE_BEFORE_DEPLOY_STOW)
+ //#define PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED // For Manual Deploy Allenkey Probe
+#endif
+
+/**
+ * Enable one or more of the following if probing seems unreliable.
+ * Heaters and/or fans can be disabled during probing to minimize electrical
+ * noise. A delay can also be added to allow noise and vibration to settle.
+ * These options are most useful for the BLTouch probe, but may also improve
+ * readings with inductive probes and piezo sensors.
+ */
+//#define PROBING_HEATERS_OFF // Turn heaters off when probing
+#if ENABLED(PROBING_HEATERS_OFF)
+ //#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy)
+#endif
+//#define PROBING_FANS_OFF // Turn fans off when probing
+//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing
+//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
+
+// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
+// :{ 0:'Low', 1:'High' }
+#define X_ENABLE_ON 0
+#define Y_ENABLE_ON 0
+#define Z_ENABLE_ON 0
+#define E_ENABLE_ON 0 // For all extruders
+
+// Disables axis stepper immediately when it's not being used.
+// WARNING: When motors turn off there is a chance of losing position accuracy!
+#define DISABLE_X false
+#define DISABLE_Y false
+#define DISABLE_Z false
+
+// Warn on display about possibly reduced accuracy
+//#define DISABLE_REDUCED_ACCURACY_WARNING
+
+// @section extruder
+
+#define DISABLE_E false // For all extruders
+#define DISABLE_INACTIVE_EXTRUDER // Keep only the active extruder enabled
+
+// @section machine
+
+// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
+#define INVERT_X_DIR true
+#define INVERT_Y_DIR false
+#define INVERT_Z_DIR false
+
+// @section extruder
+
+// For direct drive extruder v9 set to true, for geared extruder set to false.
+#define INVERT_E0_DIR true
+#define INVERT_E1_DIR false
+#define INVERT_E2_DIR false
+#define INVERT_E3_DIR false
+#define INVERT_E4_DIR false
+#define INVERT_E5_DIR false
+
+// @section homing
+
+//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed
+
+//#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off.
+
+//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ...
+ // Be sure you have this distance over your Z_MAX_POS in case.
+
+// Direction of endstops when homing; 1=MAX, -1=MIN
+// :[-1,1]
+#define X_HOME_DIR 1
+#define Y_HOME_DIR -1
+#define Z_HOME_DIR -1
+
+// @section machine
+
+// The size of the print bed
+#define X_BED_SIZE 125
+#define Y_BED_SIZE 140
+
+// Travel limits (mm) after homing, corresponding to endstop positions.
+#define X_MIN_POS 0
+#define Y_MIN_POS 0
+#define Z_MIN_POS 0
+#define X_MAX_POS X_BED_SIZE
+#define Y_MAX_POS Y_BED_SIZE
+#define Z_MAX_POS 100
+
+/**
+ * Software Endstops
+ *
+ * - Prevent moves outside the set machine bounds.
+ * - Individual axes can be disabled, if desired.
+ * - X and Y only apply to Cartesian robots.
+ * - Use 'M211' to set software endstops on/off or report current state
+ */
+
+// Min software endstops constrain movement within minimum coordinate bounds
+#define MIN_SOFTWARE_ENDSTOPS
+#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
+ #define MIN_SOFTWARE_ENDSTOP_X
+ #define MIN_SOFTWARE_ENDSTOP_Y
+ #define MIN_SOFTWARE_ENDSTOP_Z
+#endif
+
+// Max software endstops constrain movement within maximum coordinate bounds
+#define MAX_SOFTWARE_ENDSTOPS
+#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
+ #define MAX_SOFTWARE_ENDSTOP_X
+ #define MAX_SOFTWARE_ENDSTOP_Y
+ #define MAX_SOFTWARE_ENDSTOP_Z
+#endif
+
+#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
+ //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD
+#endif
+
+/**
+ * Filament Runout Sensors
+ * Mechanical or opto endstops are used to check for the presence of filament.
+ *
+ * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
+ * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
+ * By default the firmware assumes HIGH=FILAMENT PRESENT.
+ */
+//#define FILAMENT_RUNOUT_SENSOR
+#if ENABLED(FILAMENT_RUNOUT_SENSOR)
+ #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
+ #define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
+ #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
+ //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
+
+ // Set one or more commands to execute on filament runout.
+ // (After 'M412 H' Marlin will ask the host to handle the process.)
+ #define FILAMENT_RUNOUT_SCRIPT "M600"
+
+ // After a runout is detected, continue printing this length of filament
+ // before executing the runout script. Useful for a sensor at the end of
+ // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
+ //#define FILAMENT_RUNOUT_DISTANCE_MM 25
+
+ #ifdef FILAMENT_RUNOUT_DISTANCE_MM
+ // Enable this option to use an encoder disc that toggles the runout pin
+ // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
+ // large enough to avoid false positives.)
+ //#define FILAMENT_MOTION_SENSOR
+ #endif
+#endif
+
+//===========================================================================
+//=============================== Bed Leveling ==============================
+//===========================================================================
+// @section calibrate
+
+/**
+ * Choose one of the options below to enable G29 Bed Leveling. The parameters
+ * and behavior of G29 will change depending on your selection.
+ *
+ * If using a Probe for Z Homing, enable Z_SAFE_HOMING also!
+ *
+ * - AUTO_BED_LEVELING_3POINT
+ * Probe 3 arbitrary points on the bed (that aren't collinear)
+ * You specify the XY coordinates of all 3 points.
+ * The result is a single tilted plane. Best for a flat bed.
+ *
+ * - AUTO_BED_LEVELING_LINEAR
+ * Probe several points in a grid.
+ * You specify the rectangle and the density of sample points.
+ * The result is a single tilted plane. Best for a flat bed.
+ *
+ * - AUTO_BED_LEVELING_BILINEAR
+ * Probe several points in a grid.
+ * You specify the rectangle and the density of sample points.
+ * The result is a mesh, best for large or uneven beds.
+ *
+ * - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
+ * A comprehensive bed leveling system combining the features and benefits
+ * of other systems. UBL also includes integrated Mesh Generation, Mesh
+ * Validation and Mesh Editing systems.
+ *
+ * - MESH_BED_LEVELING
+ * Probe a grid manually
+ * The result is a mesh, suitable for large or uneven beds. (See BILINEAR.)
+ * For machines without a probe, Mesh Bed Leveling provides a method to perform
+ * leveling in steps so you can manually adjust the Z height at each grid-point.
+ * With an LCD controller the process is guided step-by-step.
+ */
+//#define AUTO_BED_LEVELING_3POINT
+//#define AUTO_BED_LEVELING_LINEAR
+//#define AUTO_BED_LEVELING_BILINEAR
+//#define AUTO_BED_LEVELING_UBL
+#define MESH_BED_LEVELING
+
+/**
+ * Normally G28 leaves leveling disabled on completion. Enable
+ * this option to have G28 restore the prior leveling state.
+ */
+//#define RESTORE_LEVELING_AFTER_G28
+
+/**
+ * Enable detailed logging of G28, G29, M48, etc.
+ * Turn on with the command 'M111 S32'.
+ * NOTE: Requires a lot of PROGMEM!
+ */
+//#define DEBUG_LEVELING_FEATURE
+
+#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL)
+ // Gradually reduce leveling correction until a set height is reached,
+ // at which point movement will be level to the machine's XY plane.
+ // The height can be set with M420 Z
+ #define ENABLE_LEVELING_FADE_HEIGHT
+
+ // For Cartesian machines, instead of dividing moves on mesh boundaries,
+ // split up moves into short segments like a Delta. This follows the
+ // contours of the bed more closely than edge-to-edge straight moves.
+ #define SEGMENT_LEVELED_MOVES
+ #define LEVELED_SEGMENT_LENGTH 5.0 // (mm) Length of all segments (except the last one)
+
+ /**
+ * Enable the G26 Mesh Validation Pattern tool.
+ */
+ #define G26_MESH_VALIDATION
+ #if ENABLED(G26_MESH_VALIDATION)
+ #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
+ #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for the G26 Mesh Validation Tool.
+ #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for the G26 Mesh Validation Tool.
+ #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for the G26 Mesh Validation Tool.
+ #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for XY Moves for the G26 Mesh Validation Tool.
+ #endif
+
+#endif
+
+#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
+
+ // Set the number of grid points per dimension.
+ #define GRID_MAX_POINTS_X 3
+ #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
+
+ // Set the boundaries for probing (where the probe can reach).
+ //#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE
+ //#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - (MIN_PROBE_EDGE))
+ //#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE
+ //#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - (MIN_PROBE_EDGE))
+
+ // Probe along the Y axis, advancing X after each column
+ //#define PROBE_Y_FIRST
+
+ #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
+
+ // Beyond the probed grid, continue the implied tilt?
+ // Default is to maintain the height of the nearest edge.
+ //#define EXTRAPOLATE_BEYOND_GRID
+
+ //
+ // Experimental Subdivision of the grid by Catmull-Rom method.
+ // Synthesizes intermediate points to produce a more detailed mesh.
+ //
+ //#define ABL_BILINEAR_SUBDIVISION
+ #if ENABLED(ABL_BILINEAR_SUBDIVISION)
+ // Number of subdivisions between probe points
+ #define BILINEAR_SUBDIVISIONS 3
+ #endif
+
+ #endif
+
+#elif ENABLED(AUTO_BED_LEVELING_UBL)
+
+ //===========================================================================
+ //========================= Unified Bed Leveling ============================
+ //===========================================================================
+
+ //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
+
+ #define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed
+ #define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
+ #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
+
+ #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
+ #define UBL_SAVE_ACTIVE_ON_M500 // Save the currently active mesh in the current slot on M500
+
+ //#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used
+ // as the Z-Height correction value.
+
+#elif ENABLED(MESH_BED_LEVELING)
+
+ //===========================================================================
+ //=================================== Mesh ==================================
+ //===========================================================================
+
+ #define MESH_INSET 10 // Set Mesh bounds as an inset region of the bed
+ #define GRID_MAX_POINTS_X 3 // Don't use more than 7 points per axis, implementation limited.
+ #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
+
+ //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest Z at Z_MIN_POS
+
+#endif // BED_LEVELING
+
+/**
+ * Points to probe for all 3-point Leveling procedures.
+ * Override if the automatically selected points are inadequate.
+ */
+#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL)
+ //#define PROBE_PT_1_X 15
+ //#define PROBE_PT_1_Y 180
+ //#define PROBE_PT_2_X 15
+ //#define PROBE_PT_2_Y 20
+ //#define PROBE_PT_3_X 170
+ //#define PROBE_PT_3_Y 20
+#endif
+
+/**
+ * Add a bed leveling sub-menu for ABL or MBL.
+ * Include a guided procedure if manual probing is enabled.
+ */
+#define LCD_BED_LEVELING
+
+#if ENABLED(LCD_BED_LEVELING)
+ #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
+ #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment
+ #define MESH_EDIT_MENU // Add a menu to edit mesh points
+#endif
+
+// Add a menu item to move between bed corners for manual bed adjustment
+#define LEVEL_BED_CORNERS
+
+#if ENABLED(LEVEL_BED_CORNERS)
+ #define LEVEL_CORNERS_INSET 30 // (mm) An inset for corner leveling
+ #define LEVEL_CORNERS_Z_HOP 4.0 // (mm) Move nozzle up before moving between corners
+ #define LEVEL_CORNERS_HEIGHT 0.0 // (mm) Z height of nozzle at leveling points
+ //#define LEVEL_CENTER_TOO // Move to the center after the last corner
+#endif
+
+/**
+ * Commands to execute at the end of G29 probing.
+ * Useful to retract or move the Z probe out of the way.
+ */
+//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
+
+
+// @section homing
+
+// The center of the bed is at (X=0, Y=0)
+//#define BED_CENTER_AT_0_0
+
+// Manually set the home position. Leave these undefined for automatic settings.
+// For DELTA this is the top-center of the Cartesian print volume.
+//#define MANUAL_X_HOME_POS 0
+//#define MANUAL_Y_HOME_POS 0
+//#define MANUAL_Z_HOME_POS 0
+
+// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
+//
+// With this feature enabled:
+//
+// - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
+// - If stepper drivers time out, it will need X and Y homing again before Z homing.
+// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
+// - Prevent Z homing when the Z probe is outside bed area.
+//
+//#define Z_SAFE_HOMING
+
+#if ENABLED(Z_SAFE_HOMING)
+ #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28).
+ #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28).
+#endif
+
+// Homing speeds (mm/m)
+#define HOMING_FEEDRATE_XY (50*60)
+#define HOMING_FEEDRATE_Z (4*60)
+
+// Validate that endstops are triggered on homing moves
+#define VALIDATE_HOMING_ENDSTOPS
+
+// @section calibrate
+
+/**
+ * Bed Skew Compensation
+ *
+ * This feature corrects for misalignment in the XYZ axes.
+ *
+ * Take the following steps to get the bed skew in the XY plane:
+ * 1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
+ * 2. For XY_DIAG_AC measure the diagonal A to C
+ * 3. For XY_DIAG_BD measure the diagonal B to D
+ * 4. For XY_SIDE_AD measure the edge A to D
+ *
+ * Marlin automatically computes skew factors from these measurements.
+ * Skew factors may also be computed and set manually:
+ *
+ * - Compute AB : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
+ * - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
+ *
+ * If desired, follow the same procedure for XZ and YZ.
+ * Use these diagrams for reference:
+ *
+ * Y Z Z
+ * ^ B-------C ^ B-------C ^ B-------C
+ * | / / | / / | / /
+ * | / / | / / | / /
+ * | A-------D | A-------D | A-------D
+ * +-------------->X +-------------->X +-------------->Y
+ * XY_SKEW_FACTOR XZ_SKEW_FACTOR YZ_SKEW_FACTOR
+ */
+//#define SKEW_CORRECTION
+
+#if ENABLED(SKEW_CORRECTION)
+ // Input all length measurements here:
+ #define XY_DIAG_AC 282.8427124746
+ #define XY_DIAG_BD 282.8427124746
+ #define XY_SIDE_AD 200
+
+ // Or, set the default skew factors directly here
+ // to override the above measurements:
+ #define XY_SKEW_FACTOR 0.0
+
+ //#define SKEW_CORRECTION_FOR_Z
+ #if ENABLED(SKEW_CORRECTION_FOR_Z)
+ #define XZ_DIAG_AC 282.8427124746
+ #define XZ_DIAG_BD 282.8427124746
+ #define YZ_DIAG_AC 282.8427124746
+ #define YZ_DIAG_BD 282.8427124746
+ #define YZ_SIDE_AD 200
+ #define XZ_SKEW_FACTOR 0.0
+ #define YZ_SKEW_FACTOR 0.0
+ #endif
+
+ // Enable this option for M852 to set skew at runtime
+ //#define SKEW_CORRECTION_GCODE
+#endif
+
+//=============================================================================
+//============================= Additional Features ===========================
+//=============================================================================
+
+// @section extras
+
+/**
+ * EEPROM
+ *
+ * Persistent storage to preserve configurable settings across reboots.
+ *
+ * M500 - Store settings to EEPROM.
+ * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
+ * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
+ */
+#define EEPROM_SETTINGS // Persistent storage with M500 and M501
+//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
+#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
+#if ENABLED(EEPROM_SETTINGS)
+ #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
+#endif
+
+//
+// Host Keepalive
+//
+// When enabled Marlin will send a busy status message to the host
+// every couple of seconds when it can't accept commands.
+//
+#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages
+#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
+#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating
+
+//
+// M100 Free Memory Watcher
+//
+//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage
+
+//
+// G20/G21 Inch mode support
+//
+//#define INCH_MODE_SUPPORT
+
+//
+// M149 Set temperature units support
+//
+//#define TEMPERATURE_UNITS_SUPPORT
+
+// @section temperature
+
+// Preheat Constants
+#define PREHEAT_1_LABEL "PLA"
+#define PREHEAT_1_TEMP_HOTEND 180
+#define PREHEAT_1_TEMP_BED 70
+#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
+
+#define PREHEAT_2_LABEL "PETG"
+#define PREHEAT_2_TEMP_HOTEND 240
+#define PREHEAT_2_TEMP_BED 80
+#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
+
+/**
+ * Nozzle Park
+ *
+ * Park the nozzle at the given XYZ position on idle or G27.
+ *
+ * The "P" parameter controls the action applied to the Z axis:
+ *
+ * P0 (Default) If Z is below park Z raise the nozzle.
+ * P1 Raise the nozzle always to Z-park height.
+ * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
+ */
+//#define NOZZLE_PARK_FEATURE
+
+#if ENABLED(NOZZLE_PARK_FEATURE)
+ // Specify a park position as { X, Y, Z_raise }
+ #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
+ #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis)
+ #define NOZZLE_PARK_Z_FEEDRATE 5 // (mm/s) Z axis feedrate (not used for delta printers)
+#endif
+
+/**
+ * Clean Nozzle Feature -- EXPERIMENTAL
+ *
+ * Adds the G12 command to perform a nozzle cleaning process.
+ *
+ * Parameters:
+ * P Pattern
+ * S Strokes / Repetitions
+ * T Triangles (P1 only)
+ *
+ * Patterns:
+ * P0 Straight line (default). This process requires a sponge type material
+ * at a fixed bed location. "S" specifies strokes (i.e. back-forth motions)
+ * between the start / end points.
+ *
+ * P1 Zig-zag pattern between (X0, Y0) and (X1, Y1), "T" specifies the
+ * number of zig-zag triangles to do. "S" defines the number of strokes.
+ * Zig-zags are done in whichever is the narrower dimension.
+ * For example, "G12 P1 S1 T3" will execute:
+ *
+ * --
+ * | (X0, Y1) | /\ /\ /\ | (X1, Y1)
+ * | | / \ / \ / \ |
+ * A | | / \ / \ / \ |
+ * | | / \ / \ / \ |
+ * | (X0, Y0) | / \/ \/ \ | (X1, Y0)
+ * -- +--------------------------------+
+ * |________|_________|_________|
+ * T1 T2 T3
+ *
+ * P2 Circular pattern with middle at NOZZLE_CLEAN_CIRCLE_MIDDLE.
+ * "R" specifies the radius. "S" specifies the stroke count.
+ * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT.
+ *
+ * Caveats: The ending Z should be the same as starting Z.
+ * Attention: EXPERIMENTAL. G-code arguments may change.
+ *
+ */
+//#define NOZZLE_CLEAN_FEATURE
+
+#if ENABLED(NOZZLE_CLEAN_FEATURE)
+ // Default number of pattern repetitions
+ #define NOZZLE_CLEAN_STROKES 12
+
+ // Default number of triangles
+ #define NOZZLE_CLEAN_TRIANGLES 3
+
+ // Specify positions as { X, Y, Z }
+ #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)}
+ #define NOZZLE_CLEAN_END_POINT { 100, 60, (Z_MIN_POS + 1) }
+
+ // Circular pattern radius
+ #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
+ // Circular pattern circle fragments number
+ #define NOZZLE_CLEAN_CIRCLE_FN 10
+ // Middle point of circle
+ #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
+
+ // Moves the nozzle to the initial position
+ #define NOZZLE_CLEAN_GOBACK
+#endif
+
+/**
+ * Print Job Timer
+ *
+ * Automatically start and stop the print job timer on M104/M109/M190.
+ *
+ * M104 (hotend, no wait) - high temp = none, low temp = stop timer
+ * M109 (hotend, wait) - high temp = start timer, low temp = stop timer
+ * M190 (bed, wait) - high temp = start timer, low temp = none
+ *
+ * The timer can also be controlled with the following commands:
+ *
+ * M75 - Start the print job timer
+ * M76 - Pause the print job timer
+ * M77 - Stop the print job timer
+ */
+#define PRINTJOB_TIMER_AUTOSTART
+
+/**
+ * Print Counter
+ *
+ * Track statistical data such as:
+ *
+ * - Total print jobs
+ * - Total successful print jobs
+ * - Total failed print jobs
+ * - Total time printing
+ *
+ * View the current statistics with M78.
+ */
+#define PRINTCOUNTER
+
+//=============================================================================
+//============================= LCD and SD support ============================
+//=============================================================================
+
+// @section lcd
+
+/**
+ * LCD LANGUAGE
+ *
+ * Select the language to display on the LCD. These languages are available:
+ *
+ * en, an, bg, ca, cz, da, de, el, el-gr, es, eu, fi, fr, gl, hr, it,
+ * jp-kana, ko_KR, nl, pl, pt, pt-br, ru, sk, tr, uk, zh_CN, zh_TW, test
+ *
+ * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek', 'el-gr':'Greek (Greece)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'it':'Italian', 'jp-kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt-br':'Portuguese (Brazilian)', 'ru':'Russian', 'sk':'Slovak', 'tr':'Turkish', 'uk':'Ukrainian', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)', 'test':'TEST' }
+ */
+#define LCD_LANGUAGE en
+
+/**
+ * LCD Character Set
+ *
+ * Note: This option is NOT applicable to Graphical Displays.
+ *
+ * All character-based LCDs provide ASCII plus one of these
+ * language extensions:
+ *
+ * - JAPANESE ... the most common
+ * - WESTERN ... with more accented characters
+ * - CYRILLIC ... for the Russian language
+ *
+ * To determine the language extension installed on your controller:
+ *
+ * - Compile and upload with LCD_LANGUAGE set to 'test'
+ * - Click the controller to view the LCD menu
+ * - The LCD will display Japanese, Western, or Cyrillic text
+ *
+ * See http://marlinfw.org/docs/development/lcd_language.html
+ *
+ * :['JAPANESE', 'WESTERN', 'CYRILLIC']
+ */
+#define DISPLAY_CHARSET_HD44780 WESTERN
+
+/**
+ * Info Screen Style (0:Classic, 1:Prusa)
+ *
+ * :[0:'Classic', 1:'Prusa']
+ */
+#define LCD_INFO_SCREEN_STYLE 0
+
+/**
+ * SD CARD
+ *
+ * SD Card support is disabled by default. If your controller has an SD slot,
+ * you must uncomment the following option or it won't work.
+ *
+ */
+#define SDSUPPORT
+
+/**
+ * SD CARD: SPI SPEED
+ *
+ * Enable one of the following items for a slower SPI transfer speed.
+ * This may be required to resolve "volume init" errors.
+ */
+//#define SPI_SPEED SPI_HALF_SPEED
+//#define SPI_SPEED SPI_QUARTER_SPEED
+//#define SPI_SPEED SPI_EIGHTH_SPEED
+
+/**
+ * SD CARD: ENABLE CRC
+ *
+ * Use CRC checks and retries on the SD communication.
+ */
+//#define SD_CHECK_AND_RETRY
+
+/**
+ * LCD Menu Items
+ *
+ * Disable all menus and only display the Status Screen, or
+ * just remove some extraneous menu items to recover space.
+ */
+//#define NO_LCD_MENUS
+//#define SLIM_LCD_MENUS
+
+//
+// ENCODER SETTINGS
+//
+// This option overrides the default number of encoder pulses needed to
+// produce one step. Should be increased for high-resolution encoders.
+//
+#define ENCODER_PULSES_PER_STEP 4
+
+//
+// Use this option to override the number of step signals required to
+// move between next/prev menu items.
+//
+#define ENCODER_STEPS_PER_MENU_ITEM 1
+
+/**
+ * Encoder Direction Options
+ *
+ * Test your encoder's behavior first with both options disabled.
+ *
+ * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION.
+ * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION.
+ * Reversed Value Editing only? Enable BOTH options.
+ */
+
+//
+// This option reverses the encoder direction everywhere.
+//
+// Set this option if CLOCKWISE causes values to DECREASE
+//
+//#define REVERSE_ENCODER_DIRECTION
+
+//
+// This option reverses the encoder direction for navigating LCD menus.
+//
+// If CLOCKWISE normally moves DOWN this makes it go UP.
+// If CLOCKWISE normally moves UP this makes it go DOWN.
+//
+//#define REVERSE_MENU_DIRECTION
+
+//
+// Individual Axis Homing
+//
+// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
+//
+//#define INDIVIDUAL_AXIS_HOMING_MENU
+
+//
+// SPEAKER/BUZZER
+//
+// If you have a speaker that can produce tones, enable it here.
+// By default Marlin assumes you have a buzzer with a fixed frequency.
+//
+#define SPEAKER
+
+//
+// The duration and frequency for the UI feedback sound.
+// Set these to 0 to disable audio feedback in the LCD menus.
+//
+// Note: Test audio output with the G-Code:
+// M300 S P
+//
+//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
+//#define LCD_FEEDBACK_FREQUENCY_HZ 5000
+
+//=============================================================================
+//======================== LCD / Controller Selection =========================
+//======================== (Character-based LCDs) =========================
+//=============================================================================
+
+//
+// RepRapDiscount Smart Controller.
+// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
+//
+// Note: Usually sold with a white PCB.
+//
+//#define REPRAP_DISCOUNT_SMART_CONTROLLER
+
+//
+// Original RADDS LCD Display+Encoder+SDCardReader
+// http://doku.radds.org/dokumentation/lcd-display/
+//
+//#define RADDS_DISPLAY
+
+//
+// ULTIMAKER Controller.
+//
+//#define ULTIMAKERCONTROLLER
+
+//
+// ULTIPANEL as seen on Thingiverse.
+//
+//#define ULTIPANEL
+
+//
+// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3)
+// http://reprap.org/wiki/PanelOne
+//
+//#define PANEL_ONE
+
+//
+// GADGETS3D G3D LCD/SD Controller
+// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel
+//
+// Note: Usually sold with a blue PCB.
+//
+//#define G3D_PANEL
+
+//
+// RigidBot Panel V1.0
+// http://www.inventapart.com/
+//
+//#define RIGIDBOT_PANEL
+
+//
+// Makeboard 3D Printer Parts 3D Printer Mini Display 1602 Mini Controller
+// https://www.aliexpress.com/item/Micromake-Makeboard-3D-Printer-Parts-3D-Printer-Mini-Display-1602-Mini-Controller-Compatible-with-Ramps-1/32765887917.html
+//
+//#define MAKEBOARD_MINI_2_LINE_DISPLAY_1602
+
+//
+// ANET and Tronxy 20x4 Controller
+//
+//#define ZONESTAR_LCD // Requires ADC_KEYPAD_PIN to be assigned to an analog pin.
+ // This LCD is known to be susceptible to electrical interference
+ // which scrambles the display. Pressing any button clears it up.
+ // This is a LCD2004 display with 5 analog buttons.
+
+//
+// Generic 16x2, 16x4, 20x2, or 20x4 character-based LCD.
+//
+//#define ULTRA_LCD
+
+//=============================================================================
+//======================== LCD / Controller Selection =========================
+//===================== (I2C and Shift-Register LCDs) =====================
+//=============================================================================
+
+//
+// CONTROLLER TYPE: I2C
+//
+// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C
+// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C
+//
+
+//
+// Elefu RA Board Control Panel
+// http://www.elefu.com/index.php?route=product/product&product_id=53
+//
+//#define RA_CONTROL_PANEL
+
+//
+// Sainsmart (YwRobot) LCD Displays
+//
+// These require F.Malpartida's LiquidCrystal_I2C library
+// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
+//
+//#define LCD_SAINSMART_I2C_1602
+//#define LCD_SAINSMART_I2C_2004
+
+//
+// Generic LCM1602 LCD adapter
+//
+//#define LCM1602
+
+//
+// PANELOLU2 LCD with status LEDs,
+// separate encoder and click inputs.
+//
+// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later.
+// For more info: https://github.com/lincomatic/LiquidTWI2
+//
+// Note: The PANELOLU2 encoder click input can either be directly connected to
+// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1).
+//
+//#define LCD_I2C_PANELOLU2
+
+//
+// Panucatt VIKI LCD with status LEDs,
+// integrated click & L/R/U/D buttons, separate encoder inputs.
+//
+//#define LCD_I2C_VIKI
+
+//
+// CONTROLLER TYPE: Shift register panels
+//
+
+//
+// 2-wire Non-latching LCD SR from https://goo.gl/aJJ4sH
+// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD
+//
+//#define SAV_3DLCD
+
+//
+// 3-wire SR LCD with strobe using 74HC4094
+// https://github.com/mikeshub/SailfishLCD
+// Uses the code directly from Sailfish
+//
+//#define FF_INTERFACEBOARD
+
+//=============================================================================
+//======================= LCD / Controller Selection =======================
+//========================= (Graphical LCDs) ========================
+//=============================================================================
+
+//
+// CONTROLLER TYPE: Graphical 128x64 (DOGM)
+//
+// IMPORTANT: The U8glib library is required for Graphical Display!
+// https://github.com/olikraus/U8glib_Arduino
+//
+
+//
+// RepRapDiscount FULL GRAPHIC Smart Controller
+// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
+//
+//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+
+//
+// ReprapWorld Graphical LCD
+// https://reprapworld.com/?products_details&products_id/1218
+//
+//#define REPRAPWORLD_GRAPHICAL_LCD
+
+//
+// Activate one of these if you have a Panucatt Devices
+// Viki 2.0 or mini Viki with Graphic LCD
+// http://panucatt.com
+//
+//#define VIKI2
+//#define miniVIKI
+
+//
+// MakerLab Mini Panel with graphic
+// controller and SD support - http://reprap.org/wiki/Mini_panel
+//
+//#define MINIPANEL
+
+//
+// MaKr3d Makr-Panel with graphic controller and SD support.
+// http://reprap.org/wiki/MaKr3d_MaKrPanel
+//
+//#define MAKRPANEL
+
+//
+// Adafruit ST7565 Full Graphic Controller.
+// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/
+//
+//#define ELB_FULL_GRAPHIC_CONTROLLER
+
+//
+// BQ LCD Smart Controller shipped by
+// default with the BQ Hephestos 2 and Witbox 2.
+//
+//#define BQ_LCD_SMART_CONTROLLER
+
+//
+// Cartesio UI
+// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
+//
+//#define CARTESIO_UI
+
+//
+// LCD for Melzi Card with Graphical LCD
+//
+//#define LCD_FOR_MELZI
+
+//
+// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
+// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
+//
+//#define ULTI_CONTROLLER
+
+//
+// MKS MINI12864 with graphic controller and SD support
+// https://reprap.org/wiki/MKS_MINI_12864
+//
+#define MKS_MINI_12864
+
+//
+// FYSETC variant of the MINI12864 graphic controller with SD support
+// https://wiki.fysetc.com/Mini12864_Panel/
+//
+//#define FYSETC_MINI_12864_X_X // Type C/D/E/F. No tunable RGB Backlight by default
+//#define FYSETC_MINI_12864_1_2 // Type C/D/E/F. Simple RGB Backlight (always on)
+//#define FYSETC_MINI_12864_2_0 // Type A/B. Discreet RGB Backlight
+//#define FYSETC_MINI_12864_2_1 // Type A/B. Neopixel RGB Backlight
+
+//
+// Factory display for Creality CR-10
+// https://www.aliexpress.com/item/Universal-LCD-12864-3D-Printer-Display-Screen-With-Encoder-For-CR-10-CR-7-Model/32833148327.html
+//
+// This is RAMPS-compatible using a single 10-pin connector.
+// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
+//
+//#define CR10_STOCKDISPLAY
+
+//
+// ANET and Tronxy Graphical Controller
+//
+// Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
+// A clone of the RepRapDiscount full graphics display but with
+// different pins/wiring (see pins_ANET_10.h).
+//
+//#define ANET_FULL_GRAPHICS_LCD
+
+//
+// AZSMZ 12864 LCD with SD
+// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
+//
+//#define AZSMZ_12864
+
+//
+// Silvergate GLCD controller
+// http://github.com/android444/Silvergate
+//
+//#define SILVER_GATE_GLCD_CONTROLLER
+
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
+//=============================================================================
+//========================== Extensible UI Displays ===========================
+//=============================================================================
+
+//
+// DGUS Touch Display with DWIN OS
+//
+//#define DGUS_LCD
+
+//
+// Touch-screen LCD for Malyan M200 printers
+//
+//#define MALYAN_LCD
+
+//
+// Third-party or vendor-customized controller interfaces.
+// Sources should be installed in 'src/lcd/extensible_ui'.
+//
+//#define EXTENSIBLE_UI
+
+//=============================================================================
+//=============================== Graphical TFTs ==============================
+//=============================================================================
+
+//
+// MKS Robin 320x240 color display
+//
+//#define MKS_ROBIN_TFT
+
+//=============================================================================
+//============================ Other Controllers ============================
+//=============================================================================
+
+//
+// CONTROLLER TYPE: Keypad / Add-on
+//
+
+//
+// RepRapWorld REPRAPWORLD_KEYPAD v1.1
+// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
+//
+// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key
+// is pressed, a value of 10.0 means 10mm per click.
+//
+//#define REPRAPWORLD_KEYPAD
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
+
+//=============================================================================
+//=============================== Extra Features ==============================
+//=============================================================================
+
+// @section extras
+
+// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
+//#define FAST_PWM_FAN
+
+// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
+// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
+// is too low, you should also increment SOFT_PWM_SCALE.
+#define FAN_SOFT_PWM
+
+// Incrementing this by 1 will double the software PWM frequency,
+// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
+// However, control resolution will be halved for each increment;
+// at zero value, there are 128 effective control positions.
+// :[0,1,2,3,4,5,6,7]
+#define SOFT_PWM_SCALE 0
+
+// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
+// be used to mitigate the associated resolution loss. If enabled,
+// some of the PWM cycles are stretched so on average the desired
+// duty cycle is attained.
+//#define SOFT_PWM_DITHER
+
+// Temperature status LEDs that display the hotend and bed temperature.
+// If all hotends, bed temperature, and target temperature are under 54C
+// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
+//#define TEMP_STAT_LEDS
+
+// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure
+//#define SF_ARC_FIX
+
+// Support for the BariCUDA Paste Extruder
+//#define BARICUDA
+
+// Support for BlinkM/CyzRgb
+//#define BLINKM
+
+// Support for PCA9632 PWM LED driver
+//#define PCA9632
+
+// Support for PCA9533 PWM LED driver
+// https://github.com/mikeshub/SailfishRGB_LED
+//#define PCA9533
+
+/**
+ * RGB LED / LED Strip Control
+ *
+ * Enable support for an RGB LED connected to 5V digital pins, or
+ * an RGB Strip connected to MOSFETs controlled by digital pins.
+ *
+ * Adds the M150 command to set the LED (or LED strip) color.
+ * If pins are PWM capable (e.g., 4, 5, 6, 11) then a range of
+ * luminance values can be set from 0 to 255.
+ * For Neopixel LED an overall brightness parameter is also available.
+ *
+ * *** CAUTION ***
+ * LED Strips require a MOSFET Chip between PWM lines and LEDs,
+ * as the Arduino cannot handle the current the LEDs will require.
+ * Failure to follow this precaution can destroy your Arduino!
+ * NOTE: A separate 5V power supply is required! The Neopixel LED needs
+ * more current than the Arduino 5V linear regulator can produce.
+ * *** CAUTION ***
+ *
+ * LED Type. Enable only one of the following two options.
+ *
+ */
+//#define RGB_LED
+//#define RGBW_LED
+
+#if EITHER(RGB_LED, RGBW_LED)
+ //#define RGB_LED_R_PIN 34
+ //#define RGB_LED_G_PIN 43
+ //#define RGB_LED_B_PIN 35
+ //#define RGB_LED_W_PIN -1
+#endif
+
+// Support for Adafruit Neopixel LED driver
+//#define NEOPIXEL_LED
+#if ENABLED(NEOPIXEL_LED)
+ #define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
+ #define NEOPIXEL_PIN 4 // LED driving pin
+ #define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip
+ #define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
+ #define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
+ //#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
+
+ // Use a single Neopixel LED for static (background) lighting
+ //#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
+ //#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
+#endif
+
+/**
+ * Printer Event LEDs
+ *
+ * During printing, the LEDs will reflect the printer status:
+ *
+ * - Gradually change from blue to violet as the heated bed gets to target temp
+ * - Gradually change from violet to red as the hotend gets to temperature
+ * - Change to white to illuminate work surface
+ * - Change to green once print has finished
+ * - Turn off after the print has finished and the user has pushed a button
+ */
+#if ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
+ #define PRINTER_EVENT_LEDS
+#endif
+
+/**
+ * R/C SERVO support
+ * Sponsored by TrinityLabs, Reworked by codexmas
+ */
+
+/**
+ * Number of servos
+ *
+ * For some servo-related options NUM_SERVOS will be set automatically.
+ * Set this manually if there are extra servos needing manual control.
+ * Leave undefined or set to 0 to entirely disable the servo subsystem.
+ */
+//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
+
+// Delay (in milliseconds) before the next move will start, to give the servo time to reach its target angle.
+// 300ms is a good value but you can try less delay.
+// If the servo can't reach the requested position, increase it.
+#define SERVO_DELAY { 300 }
+
+// Only power servos during movement, otherwise leave off to prevent jitter
+//#define DEACTIVATE_SERVOS_AFTER_MOVE
+
+// Allow servo angle to be edited and saved to EEPROM
+//#define EDITABLE_SERVO_ANGLES
diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Configuration_adv.h b/config/examples/Wanhao/Duplicator i3 Mini/Configuration_adv.h
new file mode 100644
index 0000000000..145131d6a6
--- /dev/null
+++ b/config/examples/Wanhao/Duplicator i3 Mini/Configuration_adv.h
@@ -0,0 +1,2550 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 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 .
+ *
+ */
+#pragma once
+
+/**
+ * Configuration_adv.h
+ *
+ * Advanced settings.
+ * Only change these if you know exactly what you're doing.
+ * Some of these settings can damage your printer if improperly set!
+ *
+ * Basic settings can be found in Configuration.h
+ *
+ */
+#define CONFIGURATION_ADV_H_VERSION 020000
+
+// @section temperature
+
+//===========================================================================
+//=============================Thermal Settings ============================
+//===========================================================================
+
+//
+// Custom Thermistor 1000 parameters
+//
+#if TEMP_SENSOR_0 == 1000
+ #define HOTEND0_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND0_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND0_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_1 == 1000
+ #define HOTEND1_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND1_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND1_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_2 == 1000
+ #define HOTEND2_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND2_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND2_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_3 == 1000
+ #define HOTEND3_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND3_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND3_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_4 == 1000
+ #define HOTEND4_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND4_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND4_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_5 == 1000
+ #define HOTEND5_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND5_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND5_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_BED == 1000
+ #define BED_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define BED_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define BED_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_CHAMBER == 1000
+ #define CHAMBER_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define CHAMBER_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define CHAMBER_BETA 3950 // Beta value
+#endif
+
+//
+// Hephestos 2 24V heated bed upgrade kit.
+// https://store.bq.com/en/heated-bed-kit-hephestos2
+//
+//#define HEPHESTOS2_HEATED_BED_KIT
+#if ENABLED(HEPHESTOS2_HEATED_BED_KIT)
+ #undef TEMP_SENSOR_BED
+ #define TEMP_SENSOR_BED 70
+ #define HEATER_BED_INVERTING true
+#endif
+
+/**
+ * Heated Chamber settings
+ */
+#if TEMP_SENSOR_CHAMBER
+ #define CHAMBER_MINTEMP 5
+ #define CHAMBER_MAXTEMP 60
+ #define TEMP_CHAMBER_HYSTERESIS 1 // (°C) Temperature proximity considered "close enough" to the target
+ //#define CHAMBER_LIMIT_SWITCHING
+ //#define HEATER_CHAMBER_PIN 44 // Chamber heater on/off pin
+ //#define HEATER_CHAMBER_INVERTING false
+#endif
+
+#if DISABLED(PIDTEMPBED)
+ #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
+ #if ENABLED(BED_LIMIT_SWITCHING)
+ #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
+ #endif
+#endif
+
+/**
+ * Thermal Protection provides additional protection to your printer from damage
+ * and fire. Marlin always includes safe min and max temperature ranges which
+ * protect against a broken or disconnected thermistor wire.
+ *
+ * The issue: If a thermistor falls out, it will report the much lower
+ * temperature of the air in the room, and the the firmware will keep
+ * the heater on.
+ *
+ * The solution: Once the temperature reaches the target, start observing.
+ * If the temperature stays too far below the target (hysteresis) for too
+ * long (period), the firmware will halt the machine as a safety precaution.
+ *
+ * If you get false positives for "Thermal Runaway", increase
+ * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
+ */
+#if ENABLED(THERMAL_PROTECTION_HOTENDS)
+ #define THERMAL_PROTECTION_PERIOD 40 // Seconds
+ #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius
+
+ //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
+ #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
+ //#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303
+ #endif
+
+ /**
+ * Whenever an M104, M109, or M303 increases the target temperature, the
+ * firmware will wait for the WATCH_TEMP_PERIOD to expire. If the temperature
+ * hasn't increased by WATCH_TEMP_INCREASE degrees, the machine is halted and
+ * requires a hard reset. This test restarts with any M104/M109/M303, but only
+ * if the current temperature is far enough below the target for a reliable
+ * test.
+ *
+ * If you get false positives for "Heating failed", increase WATCH_TEMP_PERIOD
+ * and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set
+ * below 2.
+ */
+ #define WATCH_TEMP_PERIOD 20 // Seconds
+ #define WATCH_TEMP_INCREASE 2 // Degrees Celsius
+#endif
+
+/**
+ * Thermal Protection parameters for the bed are just as above for hotends.
+ */
+#if ENABLED(THERMAL_PROTECTION_BED)
+ #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds
+ #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
+
+ /**
+ * As described above, except for the bed (M140/M190/M303).
+ */
+ #define WATCH_BED_TEMP_PERIOD 60 // Seconds
+ #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
+#endif
+
+/**
+ * Thermal Protection parameters for the heated chamber.
+ */
+#if ENABLED(THERMAL_PROTECTION_CHAMBER)
+ #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // Seconds
+ #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // Degrees Celsius
+
+ /**
+ * Heated chamber watch settings (M141/M191).
+ */
+ #define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
+ #define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
+#endif
+
+#if ENABLED(PIDTEMP)
+ // Add an experimental additional term to the heater power, proportional to the extrusion speed.
+ // A well-chosen Kc value should add just enough power to melt the increased material volume.
+ //#define PID_EXTRUSION_SCALING
+ #if ENABLED(PID_EXTRUSION_SCALING)
+ #define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
+ #define LPQ_MAX_LEN 50
+ #endif
+#endif
+
+/**
+ * Automatic Temperature:
+ * The hotend target temperature is calculated by all the buffered lines of gcode.
+ * The maximum buffered steps/sec of the extruder motor is called "se".
+ * Start autotemp mode with M109 S B F
+ * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by
+ * mintemp and maxtemp. Turn this off by executing M109 without F*
+ * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp.
+ * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode
+ */
+#define AUTOTEMP
+#if ENABLED(AUTOTEMP)
+ #define AUTOTEMP_OLDWEIGHT 0.98
+#endif
+
+// Show extra position information in M114
+//#define M114_DETAIL
+
+// Show Temperature ADC value
+// Enable for M105 to include ADC values read from temperature sensors.
+//#define SHOW_TEMP_ADC_VALUES
+
+/**
+ * High Temperature Thermistor Support
+ *
+ * Thermistors able to support high temperature tend to have a hard time getting
+ * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP
+ * will probably be caught when the heating element first turns on during the
+ * preheating process, which will trigger a min_temp_error as a safety measure
+ * and force stop everything.
+ * To circumvent this limitation, we allow for a preheat time (during which,
+ * min_temp_error won't be triggered) and add a min_temp buffer to handle
+ * aberrant readings.
+ *
+ * If you want to enable this feature for your hotend thermistor(s)
+ * uncomment and set values > 0 in the constants below
+ */
+
+// The number of consecutive low temperature errors that can occur
+// before a min_temp_error is triggered. (Shouldn't be more than 10.)
+//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
+
+// The number of milliseconds a hotend will preheat before starting to check
+// the temperature. This value should NOT be set to the time it takes the
+// hot end to reach the target temperature, but the time it takes to reach
+// the minimum temperature your thermistor can read. The lower the better/safer.
+// This shouldn't need to be more than 30 seconds (30000)
+//#define MILLISECONDS_PREHEAT_TIME 0
+
+// @section extruder
+
+// Extruder runout prevention.
+// If the machine is idle and the temperature over MINTEMP
+// then extrude some filament every couple of SECONDS.
+//#define EXTRUDER_RUNOUT_PREVENT
+#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
+ #define EXTRUDER_RUNOUT_MINTEMP 190
+ #define EXTRUDER_RUNOUT_SECONDS 30
+ #define EXTRUDER_RUNOUT_SPEED 1500 // (mm/m)
+ #define EXTRUDER_RUNOUT_EXTRUDE 5 // (mm)
+#endif
+
+// @section temperature
+
+// Calibration for AD595 / AD8495 sensor to adjust temperature measurements.
+// The final temperature is calculated as (measuredTemp * GAIN) + OFFSET.
+#define TEMP_SENSOR_AD595_OFFSET 0.0
+#define TEMP_SENSOR_AD595_GAIN 1.0
+#define TEMP_SENSOR_AD8495_OFFSET 0.0
+#define TEMP_SENSOR_AD8495_GAIN 1.0
+
+/**
+ * Controller Fan
+ * To cool down the stepper drivers and MOSFETs.
+ *
+ * The fan will turn on automatically whenever any stepper is enabled
+ * and turn off after a set period after all steppers are turned off.
+ */
+//#define USE_CONTROLLER_FAN
+#if ENABLED(USE_CONTROLLER_FAN)
+ //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
+ #define CONTROLLERFAN_SECS 60 // Duration in seconds for the fan to run after all motors are disabled
+ #define CONTROLLERFAN_SPEED 255 // 255 == full speed
+#endif
+
+// When first starting the main fan, run it at full speed for the
+// given number of milliseconds. This gets the fan spinning reliably
+// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
+//#define FAN_KICKSTART_TIME 100
+
+/**
+ * PWM Fan Scaling
+ *
+ * Define the min/max speeds for PWM fans (as set with M106).
+ *
+ * With these options the M106 0-255 value range is scaled to a subset
+ * to ensure that the fan has enough power to spin, or to run lower
+ * current fans with higher current. (e.g., 5V/12V fans with 12V/24V)
+ * Value 0 always turns off the fan.
+ *
+ * Define one or both of these to override the default 0-255 range.
+ */
+//#define FAN_MIN_PWM 50
+//#define FAN_MAX_PWM 128
+
+/**
+ * FAST PWM FAN Settings
+ *
+ * Use to change the FAST FAN PWM frequency (if enabled in Configuration.h)
+ * Combinations of PWM Modes, prescale values and TOP resolutions are used internally to produce a
+ * frequency as close as possible to the desired frequency.
+ *
+ * FAST_PWM_FAN_FREQUENCY [undefined by default]
+ * Set this to your desired frequency.
+ * If left undefined this defaults to F = F_CPU/(2*255*1)
+ * ie F = 31.4 Khz on 16 MHz microcontrollers or F = 39.2 KHz on 20 MHz microcontrollers
+ * These defaults are the same as with the old FAST_PWM_FAN implementation - no migration is required
+ * NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behavior.
+ *
+ * USE_OCR2A_AS_TOP [undefined by default]
+ * Boards that use TIMER2 for PWM have limitations resulting in only a few possible frequencies on TIMER2:
+ * 16MHz MCUs: [62.5KHz, 31.4KHz (default), 7.8KHz, 3.92KHz, 1.95KHz, 977Hz, 488Hz, 244Hz, 60Hz, 122Hz, 30Hz]
+ * 20MHz MCUs: [78.1KHz, 39.2KHz (default), 9.77KHz, 4.9KHz, 2.44KHz, 1.22KHz, 610Hz, 305Hz, 153Hz, 76Hz, 38Hz]
+ * A greater range can be achieved by enabling USE_OCR2A_AS_TOP. But note that this option blocks the use of
+ * PWM on pin OC2A. Only use this option if you don't need PWM on 0C2A. (Check your schematic.)
+ * USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies.
+ */
+#if ENABLED(FAST_PWM_FAN)
+ //#define FAST_PWM_FAN_FREQUENCY 31400
+ //#define USE_OCR2A_AS_TOP
+#endif
+
+// @section extruder
+
+/**
+ * Extruder cooling fans
+ *
+ * Extruder auto fans automatically turn on when their extruders'
+ * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
+ *
+ * Your board's pins file specifies the recommended pins. Override those here
+ * or set to -1 to disable completely.
+ *
+ * Multiple extruders can be assigned to the same pin in which case
+ * the fan will turn on when any selected extruder is above the threshold.
+ */
+#define E0_AUTO_FAN_PIN -1
+#define E1_AUTO_FAN_PIN -1
+#define E2_AUTO_FAN_PIN -1
+#define E3_AUTO_FAN_PIN -1
+#define E4_AUTO_FAN_PIN -1
+#define E5_AUTO_FAN_PIN -1
+#define CHAMBER_AUTO_FAN_PIN -1
+
+#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
+#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
+#define CHAMBER_AUTO_FAN_TEMPERATURE 30
+#define CHAMBER_AUTO_FAN_SPEED 255
+
+/**
+ * Part-Cooling Fan Multiplexer
+ *
+ * This feature allows you to digitally multiplex the fan output.
+ * The multiplexer is automatically switched at tool-change.
+ * Set FANMUX[012]_PINs below for up to 2, 4, or 8 multiplexed fans.
+ */
+#define FANMUX0_PIN -1
+#define FANMUX1_PIN -1
+#define FANMUX2_PIN -1
+
+/**
+ * M355 Case Light on-off / brightness
+ */
+//#define CASE_LIGHT_ENABLE
+#if ENABLED(CASE_LIGHT_ENABLE)
+ //#define CASE_LIGHT_PIN 4 // Override the default pin if needed
+ #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW
+ #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on
+ #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin)
+ //#define CASE_LIGHT_MENU // Add Case Light options to the LCD menu
+ //#define CASE_LIGHT_NO_BRIGHTNESS // Disable brightness control. Enable for non-PWM lighting.
+ //#define CASE_LIGHT_USE_NEOPIXEL // Use Neopixel LED as case light, requires NEOPIXEL_LED.
+ #if ENABLED(CASE_LIGHT_USE_NEOPIXEL)
+ #define CASE_LIGHT_NEOPIXEL_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White }
+ #endif
+#endif
+
+// @section homing
+
+// If you want endstops to stay on (by default) even when not homing
+// enable this option. Override at any time with M120, M121.
+//#define ENDSTOPS_ALWAYS_ON_DEFAULT
+
+// @section extras
+
+//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats.
+
+// Employ an external closed loop controller. Override pins here if needed.
+//#define EXTERNAL_CLOSED_LOOP_CONTROLLER
+#if ENABLED(EXTERNAL_CLOSED_LOOP_CONTROLLER)
+ //#define CLOSED_LOOP_ENABLE_PIN -1
+ //#define CLOSED_LOOP_MOVE_COMPLETE_PIN -1
+#endif
+
+/**
+ * Dual Steppers / Dual Endstops
+ *
+ * This section will allow you to use extra E drivers to drive a second motor for X, Y, or Z axes.
+ *
+ * For example, set X_DUAL_STEPPER_DRIVERS setting to use a second motor. If the motors need to
+ * spin in opposite directions set INVERT_X2_VS_X_DIR. If the second motor needs its own endstop
+ * set X_DUAL_ENDSTOPS. This can adjust for "racking." Use X2_USE_ENDSTOP to set the endstop plug
+ * that should be used for the second endstop. Extra endstops will appear in the output of 'M119'.
+ *
+ * Use X_DUAL_ENDSTOP_ADJUSTMENT to adjust for mechanical imperfection. After homing both motors
+ * this offset is applied to the X2 motor. To find the offset home the X axis, and measure the error
+ * in X2. Dual endstop offsets can be set at runtime with 'M666 X Y Z'.
+ */
+
+//#define X_DUAL_STEPPER_DRIVERS
+#if ENABLED(X_DUAL_STEPPER_DRIVERS)
+ #define INVERT_X2_VS_X_DIR true // Set 'true' if X motors should rotate in opposite directions
+ //#define X_DUAL_ENDSTOPS
+ #if ENABLED(X_DUAL_ENDSTOPS)
+ #define X2_USE_ENDSTOP _XMAX_
+ #define X_DUAL_ENDSTOPS_ADJUSTMENT 0
+ #endif
+#endif
+
+//#define Y_DUAL_STEPPER_DRIVERS
+#if ENABLED(Y_DUAL_STEPPER_DRIVERS)
+ #define INVERT_Y2_VS_Y_DIR true // Set 'true' if Y motors should rotate in opposite directions
+ //#define Y_DUAL_ENDSTOPS
+ #if ENABLED(Y_DUAL_ENDSTOPS)
+ #define Y2_USE_ENDSTOP _YMAX_
+ #define Y_DUAL_ENDSTOPS_ADJUSTMENT 0
+ #endif
+#endif
+
+//#define Z_DUAL_STEPPER_DRIVERS
+#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
+ //#define Z_DUAL_ENDSTOPS
+ #if ENABLED(Z_DUAL_ENDSTOPS)
+ #define Z2_USE_ENDSTOP _XMAX_
+ #define Z_DUAL_ENDSTOPS_ADJUSTMENT 0
+ #endif
+#endif
+
+//#define Z_TRIPLE_STEPPER_DRIVERS
+#if ENABLED(Z_TRIPLE_STEPPER_DRIVERS)
+ //#define Z_TRIPLE_ENDSTOPS
+ #if ENABLED(Z_TRIPLE_ENDSTOPS)
+ #define Z2_USE_ENDSTOP _XMAX_
+ #define Z3_USE_ENDSTOP _YMAX_
+ #define Z_TRIPLE_ENDSTOPS_ADJUSTMENT2 0
+ #define Z_TRIPLE_ENDSTOPS_ADJUSTMENT3 0
+ #endif
+#endif
+
+/**
+ * Dual X Carriage
+ *
+ * This setup has two X carriages that can move independently, each with its own hotend.
+ * The carriages can be used to print an object with two colors or materials, or in
+ * "duplication mode" it can print two identical or X-mirrored objects simultaneously.
+ * The inactive carriage is parked automatically to prevent oozing.
+ * X1 is the left carriage, X2 the right. They park and home at opposite ends of the X axis.
+ * By default the X2 stepper is assigned to the first unused E plug on the board.
+ *
+ * The following Dual X Carriage modes can be selected with M605 S:
+ *
+ * 0 : (FULL_CONTROL) The slicer has full control over both X-carriages and can achieve optimal travel
+ * results as long as it supports dual X-carriages. (M605 S0)
+ *
+ * 1 : (AUTO_PARK) The firmware automatically parks and unparks the X-carriages on tool-change so
+ * that additional slicer support is not required. (M605 S1)
+ *
+ * 2 : (DUPLICATION) The firmware moves the second X-carriage and extruder in synchronization with
+ * the first X-carriage and extruder, to print 2 copies of the same object at the same time.
+ * Set the constant X-offset and temperature differential with M605 S2 X[offs] R[deg] and
+ * follow with M605 S2 to initiate duplicated movement.
+ *
+ * 3 : (MIRRORED) Formbot/Vivedino-inspired mirrored mode in which the second extruder duplicates
+ * the movement of the first except the second extruder is reversed in the X axis.
+ * Set the initial X offset and temperature differential with M605 S2 X[offs] R[deg] and
+ * follow with M605 S3 to initiate mirrored movement.
+ */
+//#define DUAL_X_CARRIAGE
+#if ENABLED(DUAL_X_CARRIAGE)
+ #define X1_MIN_POS X_MIN_POS // Set to X_MIN_POS
+ #define X1_MAX_POS X_BED_SIZE // Set a maximum so the first X-carriage can't hit the parked second X-carriage
+ #define X2_MIN_POS 80 // Set a minimum to ensure the second X-carriage can't hit the parked first X-carriage
+ #define X2_MAX_POS 353 // Set this to the distance between toolheads when both heads are homed
+ #define X2_HOME_DIR 1 // Set to 1. The second X-carriage always homes to the maximum endstop position
+ #define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS.
+ // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software
+ // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
+ // without modifying the firmware (through the "M218 T1 X???" command).
+ // Remember: you should set the second extruder x-offset to 0 in your slicer.
+
+ // This is the default power-up mode which can be later using M605.
+ #define DEFAULT_DUAL_X_CARRIAGE_MODE DXC_AUTO_PARK_MODE
+
+ // Default x offset in duplication mode (typically set to half print bed width)
+ #define DEFAULT_DUPLICATION_X_OFFSET 100
+
+#endif // DUAL_X_CARRIAGE
+
+// Activate a solenoid on the active extruder with M380. Disable all with M381.
+// Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid.
+//#define EXT_SOLENOID
+
+// @section homing
+
+// Homing hits each endstop, retracts by these distances, then does a slower bump.
+#define X_HOME_BUMP_MM 5
+#define Y_HOME_BUMP_MM 5
+#define Z_HOME_BUMP_MM 2
+#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
+#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially
+//#define HOMING_BACKOFF_MM { 2, 2, 2 } // (mm) Move away from the endstops after homing
+
+// When G28 is called, this option will make Y home before X
+//#define HOME_Y_BEFORE_X
+
+// Enable this if X or Y can't home without homing the other axis first.
+//#define CODEPENDENT_XY_HOMING
+
+#if ENABLED(BLTOUCH)
+ /**
+ * Either: Use the defaults (recommended) or: For special purposes, use the following DEFINES
+ * Do not activate settings that the probe might not understand. Clones might misunderstand
+ * advanced commands.
+ *
+ * Note: If the probe is not deploying, check a "Cmd: Reset" and "Cmd: Self-Test" and then
+ * check the wiring of the BROWN, RED and ORANGE wires.
+ *
+ * Note: If the trigger signal of your probe is not being recognized, it has been very often
+ * because the BLACK and WHITE wires needed to be swapped. They are not "interchangeable"
+ * like they would be with a real switch. So please check the wiring first.
+ *
+ * Settings for all BLTouch and clone probes:
+ */
+
+ // Safety: The probe needs time to recognize the command.
+ // Minimum command delay (ms). Enable and increase if needed.
+ //#define BLTOUCH_DELAY 500
+
+ /**
+ * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
+ */
+
+ // Feature: Switch into SW mode after a deploy. It makes the output pulse longer. Can be useful
+ // in special cases, like noisy or filtered input configurations.
+ //#define BLTOUCH_FORCE_SW_MODE
+
+ /**
+ * Settings for BLTouch Smart 3.0 and 3.1
+ * Summary:
+ * - Voltage modes: 5V and OD (open drain - "logic voltage free") output modes
+ * - High-Speed mode
+ * - Disable LCD voltage options
+ */
+
+ /**
+ * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
+ * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
+ * If disabled, OD mode is the hard-coded default on 3.0
+ * On startup, Marlin will compare its eeprom to this vale. If the selected mode
+ * differs, a mode set eeprom write will be completed at initialization.
+ * Use the option below to force an eeprom write to a V3.1 probe regardless.
+ */
+ //#define BLTOUCH_SET_5V_MODE
+
+ /**
+ * Safety: Activate if connecting a probe with an unknown voltage mode.
+ * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
+ * V3.1: Force a probe with unknown mode into selected mode at Marlin startup ( = Probe EEPROM write )
+ * To preserve the life of the probe, use this once then turn it off and re-flash.
+ */
+ //#define BLTOUCH_FORCE_MODE_SET
+
+ /**
+ * Use "HIGH SPEED" mode for probing.
+ * Danger: Disable if your probe sometimes fails. Only suitable for stable well-adjusted systems.
+ * This feature was designed for Delta's with very fast Z moves however higher speed cartesians may function
+ * If the machine cannot raise the probe fast enough after a trigger, it may enter a fault state.
+ */
+ //#define BLTOUCH_HS_MODE
+
+ // Safety: Enable voltage mode settings in the LCD menu.
+ //#define BLTOUCH_LCD_VOLTAGE_MENU
+
+#endif // BLTOUCH
+
+/**
+ * Z Steppers Auto-Alignment
+ * Add the G34 command to align multiple Z steppers using a bed probe.
+ */
+//#define Z_STEPPER_AUTO_ALIGN
+#if ENABLED(Z_STEPPER_AUTO_ALIGN)
+ // Define probe X and Y positions for Z1, Z2 [, Z3]
+ #define Z_STEPPER_ALIGN_X { 10, 150, 290 }
+ #define Z_STEPPER_ALIGN_Y { 290, 10, 290 }
+ // Set number of iterations to align
+ #define Z_STEPPER_ALIGN_ITERATIONS 3
+ // Enable to restore leveling setup after operation
+ #define RESTORE_LEVELING_AFTER_G34
+
+ // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm
+ #define G34_MAX_GRADE 5 // (%) Maximum incline G34 will handle
+
+ // Use the amplification factor to de-/increase correction step.
+ // In case the stepper (spindle) position is further out than the test point
+ // Use a value > 1. NOTE: This may cause instability
+ #define Z_STEPPER_ALIGN_AMP 1.0
+ // Stop criterion. If the accuracy is better than this stop iterating early
+ #define Z_STEPPER_ALIGN_ACC 0.02
+#endif
+
+// @section machine
+
+#define AXIS_RELATIVE_MODES { false, false, false, false }
+
+// Add a Duplicate option for well-separated conjoined nozzles
+//#define MULTI_NOZZLE_DUPLICATION
+
+// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
+#define INVERT_X_STEP_PIN false
+#define INVERT_Y_STEP_PIN false
+#define INVERT_Z_STEP_PIN false
+#define INVERT_E_STEP_PIN false
+
+// Default stepper release if idle. Set to 0 to deactivate.
+// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
+// Time can be set by M18 and M84.
+#define DEFAULT_STEPPER_DEACTIVE_TIME 120
+#define DISABLE_INACTIVE_X true
+#define DISABLE_INACTIVE_Y true
+#define DISABLE_INACTIVE_Z true // Set to false if the nozzle will fall down on your printed part when print has finished.
+#define DISABLE_INACTIVE_E true
+
+#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
+#define DEFAULT_MINTRAVELFEEDRATE 0.0
+
+//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated
+
+// @section lcd
+
+#if EITHER(ULTIPANEL, EXTENSIBLE_UI)
+ #define MANUAL_FEEDRATE { 50*60, 50*60, 4*60, 60 } // Feedrates for manual moves along X, Y, Z, E from panel
+ #if ENABLED(ULTIPANEL)
+ #define MANUAL_E_MOVES_RELATIVE // Display extruder move distance rather than "position"
+ #define ULTIPANEL_FEEDMULTIPLY // Encoder sets the feedrate multiplier on the Status Screen
+ #endif
+#endif
+
+// @section extras
+
+// minimum time in microseconds that a movement needs to take if the buffer is emptied.
+#define DEFAULT_MINSEGMENTTIME 20000
+
+// If defined the movements slow down when the look ahead buffer is only half full
+#define SLOWDOWN
+
+// Frequency limit
+// See nophead's blog for more info
+// Not working O
+//#define XY_FREQUENCY_LIMIT 15
+
+// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
+// of the buffer and all stops. This should not be much greater than zero and should only be changed
+// if unwanted behavior is observed on a user's machine when running at very slow speeds.
+#define MINIMUM_PLANNER_SPEED 0.05 // (mm/s)
+
+//
+// Backlash Compensation
+// Adds extra movement to axes on direction-changes to account for backlash.
+//
+//#define BACKLASH_COMPENSATION
+#if ENABLED(BACKLASH_COMPENSATION)
+ // Define values for backlash distance and correction.
+ // If BACKLASH_GCODE is enabled these values are the defaults.
+ #define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm)
+ #define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction
+
+ // Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments
+ // to reduce print artifacts. (Enabling this is costly in memory and computation!)
+ //#define BACKLASH_SMOOTHING_MM 3 // (mm)
+
+ // Add runtime configuration and tuning of backlash values (M425)
+ //#define BACKLASH_GCODE
+
+ #if ENABLED(BACKLASH_GCODE)
+ // Measure the Z backlash when probing (G29) and set with "M425 Z"
+ #define MEASURE_BACKLASH_WHEN_PROBING
+
+ #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
+ // When measuring, the probe will move up to BACKLASH_MEASUREMENT_LIMIT
+ // mm away from point of contact in BACKLASH_MEASUREMENT_RESOLUTION
+ // increments while checking for the contact to be broken.
+ #define BACKLASH_MEASUREMENT_LIMIT 0.5 // (mm)
+ #define BACKLASH_MEASUREMENT_RESOLUTION 0.005 // (mm)
+ #define BACKLASH_MEASUREMENT_FEEDRATE Z_PROBE_SPEED_SLOW // (mm/m)
+ #endif
+ #endif
+#endif
+
+/**
+ * Automatic backlash, position and hotend offset calibration
+ *
+ * Enable G425 to run automatic calibration using an electrically-
+ * conductive cube, bolt, or washer mounted on the bed.
+ *
+ * G425 uses the probe to touch the top and sides of the calibration object
+ * on the bed and measures and/or correct positional offsets, axis backlash
+ * and hotend offsets.
+ *
+ * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within
+ * ±5mm of true values for G425 to succeed.
+ */
+//#define CALIBRATION_GCODE
+#if ENABLED(CALIBRATION_GCODE)
+
+ #define CALIBRATION_MEASUREMENT_RESOLUTION 0.01 // mm
+
+ #define CALIBRATION_FEEDRATE_SLOW 60 // mm/m
+ #define CALIBRATION_FEEDRATE_FAST 1200 // mm/m
+ #define CALIBRATION_FEEDRATE_TRAVEL 3000 // mm/m
+
+ // The following parameters refer to the conical section of the nozzle tip.
+ #define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm
+ #define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm
+
+ // Uncomment to enable reporting (required for "G425 V", but consumes PROGMEM).
+ //#define CALIBRATION_REPORTING
+
+ // The true location and dimension the cube/bolt/washer on the bed.
+ #define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0} // mm
+ #define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0} // mm
+
+ // Comment out any sides which are unreachable by the probe. For best
+ // auto-calibration results, all sides must be reachable.
+ #define CALIBRATION_MEASURE_RIGHT
+ #define CALIBRATION_MEASURE_FRONT
+ #define CALIBRATION_MEASURE_LEFT
+ #define CALIBRATION_MEASURE_BACK
+
+ // Probing at the exact top center only works if the center is flat. If
+ // probing on a screwhead or hollow washer, probe near the edges.
+ //#define CALIBRATION_MEASURE_AT_TOP_EDGES
+
+ // Define pin which is read during calibration
+ #ifndef CALIBRATION_PIN
+ #define CALIBRATION_PIN -1 // Override in pins.h or set to -1 to use your Z endstop
+ #define CALIBRATION_PIN_INVERTING false // Set to true to invert the pin
+ //#define CALIBRATION_PIN_PULLDOWN
+ #define CALIBRATION_PIN_PULLUP
+ #endif
+#endif
+
+/**
+ * Adaptive Step Smoothing increases the resolution of multi-axis moves, particularly at step frequencies
+ * below 1kHz (for AVR) or 10kHz (for ARM), where aliasing between axes in multi-axis moves causes audible
+ * vibration and surface artifacts. The algorithm adapts to provide the best possible step smoothing at the
+ * lowest stepping frequencies.
+ */
+//#define ADAPTIVE_STEP_SMOOTHING
+
+/**
+ * Custom Microstepping
+ * Override as-needed for your setup. Up to 3 MS pins are supported.
+ */
+//#define MICROSTEP1 LOW,LOW,LOW
+//#define MICROSTEP2 HIGH,LOW,LOW
+//#define MICROSTEP4 LOW,HIGH,LOW
+//#define MICROSTEP8 HIGH,HIGH,LOW
+//#define MICROSTEP16 LOW,LOW,HIGH
+//#define MICROSTEP32 HIGH,LOW,HIGH
+
+// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
+#define MICROSTEP_MODES { 16, 16, 16, 16, 16, 16 } // [1,2,4,8,16]
+
+/**
+ * @section stepper motor current
+ *
+ * Some boards have a means of setting the stepper motor current via firmware.
+ *
+ * The power on motor currents are set by:
+ * PWM_MOTOR_CURRENT - used by MINIRAMBO & ULTIMAIN_2
+ * known compatible chips: A4982
+ * DIGIPOT_MOTOR_CURRENT - used by BQ_ZUM_MEGA_3D, RAMBO & SCOOVO_X9H
+ * known compatible chips: AD5206
+ * DAC_MOTOR_CURRENT_DEFAULT - used by PRINTRBOARD_REVF & RIGIDBOARD_V2
+ * known compatible chips: MCP4728
+ * DIGIPOT_I2C_MOTOR_CURRENTS - used by 5DPRINT, AZTEEG_X3_PRO, AZTEEG_X5_MINI_WIFI, MIGHTYBOARD_REVE
+ * known compatible chips: MCP4451, MCP4018
+ *
+ * Motor currents can also be set by M907 - M910 and by the LCD.
+ * M907 - applies to all.
+ * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
+ * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
+ */
+//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps
+//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
+//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
+
+// Use an I2C based DIGIPOT (e.g., Azteeg X3 Pro)
+//#define DIGIPOT_I2C
+#if ENABLED(DIGIPOT_I2C) && !defined(DIGIPOT_I2C_ADDRESS_A)
+ /**
+ * Common slave addresses:
+ *
+ * A (A shifted) B (B shifted) IC
+ * Smoothie 0x2C (0x58) 0x2D (0x5A) MCP4451
+ * AZTEEG_X3_PRO 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI 0x2C (0x58) 0x2E (0x5C) MCP4451
+ * AZTEEG_X5_MINI_WIFI 0x58 0x5C MCP4451
+ * MIGHTYBOARD_REVE 0x2F (0x5E) MCP4018
+ */
+ #define DIGIPOT_I2C_ADDRESS_A 0x2C // unshifted slave address for first DIGIPOT
+ #define DIGIPOT_I2C_ADDRESS_B 0x2D // unshifted slave address for second DIGIPOT
+#endif
+
+//#define DIGIPOT_MCP4018 // Requires library from https://github.com/stawel/SlowSoftI2CMaster
+#define DIGIPOT_I2C_NUM_CHANNELS 8 // 5DPRINT: 4 AZTEEG_X3_PRO: 8 MKS SBASE: 5
+// Actual motor currents in Amps. The number of entries must match DIGIPOT_I2C_NUM_CHANNELS.
+// These correspond to the physical drivers, so be mindful if the order is changed.
+#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 } // AZTEEG_X3_PRO
+
+//===========================================================================
+//=============================Additional Features===========================
+//===========================================================================
+
+// @section lcd
+
+// Change values more rapidly when the encoder is rotated faster
+#define ENCODER_RATE_MULTIPLIER
+#if ENABLED(ENCODER_RATE_MULTIPLIER)
+ #define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed
+ #define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed
+#endif
+
+// Play a beep when the feedrate is changed from the Status Screen
+//#define BEEP_ON_FEEDRATE_CHANGE
+#if ENABLED(BEEP_ON_FEEDRATE_CHANGE)
+ #define FEEDRATE_CHANGE_BEEP_DURATION 10
+ #define FEEDRATE_CHANGE_BEEP_FREQUENCY 440
+#endif
+
+// Include a page of printer information in the LCD Main Menu
+#define LCD_INFO_MENU
+
+// Scroll a longer status message into view
+#define STATUS_MESSAGE_SCROLLING
+
+// On the Info Screen, display XY with one decimal place when possible
+//#define LCD_DECIMAL_SMALL_XY
+
+// The timeout (in ms) to return to the status screen from sub-menus
+//#define LCD_TIMEOUT_TO_STATUS 15000
+
+// Add an 'M73' G-code to set the current percentage
+#define LCD_SET_PROGRESS_MANUALLY
+
+#if HAS_CHARACTER_LCD && HAS_PRINT_PROGRESS
+ //#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
+ #if ENABLED(LCD_PROGRESS_BAR)
+ #define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
+ #define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
+ #define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever)
+ //#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it
+ //#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar
+ #endif
+#endif
+
+/**
+ * LED Control Menu
+ * Enable this feature to add LED Control to the LCD menu
+ */
+//#define LED_CONTROL_MENU
+#if ENABLED(LED_CONTROL_MENU)
+ #define LED_COLOR_PRESETS // Enable the Preset Color menu option
+ #if ENABLED(LED_COLOR_PRESETS)
+ #define LED_USER_PRESET_RED 255 // User defined RED value
+ #define LED_USER_PRESET_GREEN 128 // User defined GREEN value
+ #define LED_USER_PRESET_BLUE 0 // User defined BLUE value
+ #define LED_USER_PRESET_WHITE 255 // User defined WHITE value
+ #define LED_USER_PRESET_BRIGHTNESS 255 // User defined intensity
+ //#define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup
+ #endif
+#endif // LED_CONTROL_MENU
+
+#if ENABLED(SDSUPPORT)
+
+ // Some RAMPS and other boards don't detect when an SD card is inserted. You can work
+ // around this by connecting a push button or single throw switch to the pin defined
+ // as SD_DETECT_PIN in your board's pins definitions.
+ // This setting should be disabled unless you are using a push button, pulling the pin to ground.
+ // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER).
+ #define SD_DETECT_INVERTED
+
+ #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished
+ #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the Z enabled so your bed stays in place.
+
+ // Reverse SD sort to show "more recent" files first, according to the card's FAT.
+ // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended.
+ #define SDCARD_RATHERRECENTFIRST
+
+ #define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing
+
+ //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files
+
+ #define EVENT_GCODE_SD_STOP "G28XY" // G-code to run on Stop Print (e.g., "G28XY" or "G27")
+
+ /**
+ * Continue after Power-Loss (Creality3D)
+ *
+ * Store the current state to the SD Card at the start of each layer
+ * during SD printing. If the recovery file is found at boot time, present
+ * an option on the LCD screen to continue the print from the last-known
+ * point in the file.
+ */
+ //#define POWER_LOSS_RECOVERY
+ #if ENABLED(POWER_LOSS_RECOVERY)
+ //#define POWER_LOSS_PIN 44 // Pin to detect power loss
+ //#define POWER_LOSS_STATE HIGH // State of pin indicating power loss
+ //#define POWER_LOSS_PURGE_LEN 20 // (mm) Length of filament to purge on resume
+ //#define POWER_LOSS_RETRACT_LEN 10 // (mm) Length of filament to retract on fail. Requires backup power.
+
+ // Without a POWER_LOSS_PIN the following option helps reduce wear on the SD card,
+ // especially with "vase mode" printing. Set too high and vases cannot be continued.
+ #define POWER_LOSS_MIN_Z_CHANGE 0.05 // (mm) Minimum Z change before saving power-loss data
+ #endif
+
+ /**
+ * Sort SD file listings in alphabetical order.
+ *
+ * With this option enabled, items on SD cards will be sorted
+ * by name for easier navigation.
+ *
+ * By default...
+ *
+ * - Use the slowest -but safest- method for sorting.
+ * - Folders are sorted to the top.
+ * - The sort key is statically allocated.
+ * - No added G-code (M34) support.
+ * - 40 item sorting limit. (Items after the first 40 are unsorted.)
+ *
+ * SD sorting uses static allocation (as set by SDSORT_LIMIT), allowing the
+ * compiler to calculate the worst-case usage and throw an error if the SRAM
+ * limit is exceeded.
+ *
+ * - SDSORT_USES_RAM provides faster sorting via a static directory buffer.
+ * - SDSORT_USES_STACK does the same, but uses a local stack-based buffer.
+ * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!)
+ * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!)
+ */
+ //#define SDCARD_SORT_ALPHA
+
+ // SD Card Sorting options
+ #if ENABLED(SDCARD_SORT_ALPHA)
+ #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each.
+ #define FOLDER_SORTING -1 // -1=above 0=none 1=below
+ #define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 g-code.
+ #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
+ #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
+ #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
+ #define SDSORT_DYNAMIC_RAM false // Use dynamic allocation (within SD menus). Least expensive option. Set SDSORT_LIMIT before use!
+ #define SDSORT_CACHE_VFATS 2 // Maximum number of 13-byte VFAT entries to use for sorting.
+ // Note: Only affects SCROLL_LONG_FILENAMES with SDSORT_CACHE_NAMES but not SDSORT_DYNAMIC_RAM.
+ #endif
+
+ // This allows hosts to request long names for files and folders with M33
+ //#define LONG_FILENAME_HOST_SUPPORT
+
+ // Enable this option to scroll long filenames in the SD card menu
+ #define SCROLL_LONG_FILENAMES
+
+ // Leave the heaters on after Stop Print (not recommended!)
+ //#define SD_ABORT_NO_COOLDOWN
+
+ /**
+ * This option allows you to abort SD printing when any endstop is triggered.
+ * This feature must be enabled with "M540 S1" or from the LCD menu.
+ * To have any effect, endstops must be enabled during SD printing.
+ */
+ //#define SD_ABORT_ON_ENDSTOP_HIT
+
+ /**
+ * This option makes it easier to print the same SD Card file again.
+ * On print completion the LCD Menu will open with the file selected.
+ * You can just click to start the print, or navigate elsewhere.
+ */
+ //#define SD_REPRINT_LAST_SELECTED_FILE
+
+ /**
+ * Auto-report SdCard status with M27 S
+ */
+ //#define AUTO_REPORT_SD_STATUS
+
+ /**
+ * Support for USB thumb drives using an Arduino USB Host Shield or
+ * equivalent MAX3421E breakout board. The USB thumb drive will appear
+ * to Marlin as an SD card.
+ *
+ * The MAX3421E must be assigned the same pins as the SD card reader, with
+ * the following pin mapping:
+ *
+ * SCLK, MOSI, MISO --> SCLK, MOSI, MISO
+ * INT --> SD_DETECT_PIN
+ * SS --> SDSS
+ */
+ //#define USB_FLASH_DRIVE_SUPPORT
+ #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
+ #define USB_CS_PIN SDSS
+ #define USB_INTR_PIN SD_DETECT_PIN
+ #endif
+
+ /**
+ * When using a bootloader that supports SD-Firmware-Flashing,
+ * add a menu item to activate SD-FW-Update on the next reboot.
+ *
+ * Requires ATMEGA2560 (Arduino Mega)
+ *
+ * Tested with this bootloader:
+ * https://github.com/FleetProbe/MicroBridge-Arduino-ATMega2560
+ */
+ //#define SD_FIRMWARE_UPDATE
+ #if ENABLED(SD_FIRMWARE_UPDATE)
+ #define SD_FIRMWARE_UPDATE_EEPROM_ADDR 0x1FF
+ #define SD_FIRMWARE_UPDATE_ACTIVE_VALUE 0xF0
+ #define SD_FIRMWARE_UPDATE_INACTIVE_VALUE 0xFF
+ #endif
+
+ // Add an optimized binary file transfer mode, initiated with 'M28 B1'
+ //#define BINARY_FILE_TRANSFER
+
+ #ifdef TARGET_LPC1768
+ /**
+ * Set this option to one of the following (or the board's defaults apply):
+ *
+ * LCD - Use the SD drive in the external LCD controller.
+ * ONBOARD - Use the SD drive on the control board. (No SD_DETECT_PIN. M21 to init.)
+ * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
+ *
+ * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
+ */
+ //#define SDCARD_CONNECTION LCD
+ #endif
+
+#endif // SDSUPPORT
+
+/**
+ * By default an onboard SD card reader may be shared as a USB mass-
+ * storage device. This option hides the SD card from the host PC.
+ */
+//#define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security).
+
+/**
+ * Additional options for Graphical Displays
+ *
+ * Use the optimizations here to improve printing performance,
+ * which can be adversely affected by graphical display drawing,
+ * especially when doing several short moves, and when printing
+ * on DELTA and SCARA machines.
+ *
+ * Some of these options may result in the display lagging behind
+ * controller events, as there is a trade-off between reliable
+ * printing performance versus fast display updates.
+ */
+#if HAS_GRAPHICAL_LCD
+ // Show SD percentage next to the progress bar
+ //#define DOGM_SD_PERCENT
+
+ // Enable to save many cycles by drawing a hollow frame on the Info Screen
+ #define XYZ_HOLLOW_FRAME
+
+ // Enable to save many cycles by drawing a hollow frame on Menu Screens
+ #define MENU_HOLLOW_FRAME
+
+ // A bigger font is available for edit items. Costs 3120 bytes of PROGMEM.
+ // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
+ #define USE_BIG_EDIT_FONT
+
+ // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
+ // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
+ //#define USE_SMALL_INFOFONT
+
+ // Enable this option and reduce the value to optimize screen updates.
+ // The normal delay is 10µs. Use the lowest value that still gives a reliable display.
+ //#define DOGM_SPI_DELAY_US 5
+
+ // Swap the CW/CCW indicators in the graphics overlay
+ //#define OVERLAY_GFX_REVERSE
+
+ /**
+ * ST7920-based LCDs can emulate a 16 x 4 character display using
+ * the ST7920 character-generator for very fast screen updates.
+ * Enable LIGHTWEIGHT_UI to use this special display mode.
+ *
+ * Since LIGHTWEIGHT_UI has limited space, the position and status
+ * message occupy the same line. Set STATUS_EXPIRE_SECONDS to the
+ * length of time to display the status message before clearing.
+ *
+ * Set STATUS_EXPIRE_SECONDS to zero to never clear the status.
+ * This will prevent position updates from being displayed.
+ */
+ #if ENABLED(U8GLIB_ST7920)
+ //#define LIGHTWEIGHT_UI
+ #if ENABLED(LIGHTWEIGHT_UI)
+ #define STATUS_EXPIRE_SECONDS 20
+ #endif
+ #endif
+
+ /**
+ * Status (Info) Screen customizations
+ * These options may affect code size and screen render time.
+ * Custom status screens can forcibly override these settings.
+ */
+ //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
+ //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
+ #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
+ #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
+ #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
+ #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
+ //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
+ //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
+ //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
+ //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
+ //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
+
+ // Frivolous Game Options
+ //#define MARLIN_BRICKOUT
+ //#define MARLIN_INVADERS
+ //#define MARLIN_SNAKE
+
+#endif // HAS_GRAPHICAL_LCD
+
+// @section safety
+
+/**
+ * The watchdog hardware timer will do a reset and disable all outputs
+ * if the firmware gets too overloaded to read the temperature sensors.
+ *
+ * If you find that watchdog reboot causes your AVR board to hang forever,
+ * enable WATCHDOG_RESET_MANUAL to use a custom timer instead of WDTO.
+ * NOTE: This method is less reliable as it can only catch hangups while
+ * interrupts are enabled.
+ */
+#define USE_WATCHDOG
+#if ENABLED(USE_WATCHDOG)
+ //#define WATCHDOG_RESET_MANUAL
+#endif
+
+// @section lcd
+
+/**
+ * Babystepping enables movement of the axes by tiny increments without changing
+ * the current position values. This feature is used primarily to adjust the Z
+ * axis in the first layer of a print in real-time.
+ *
+ * Warning: Does not respect endstops!
+ */
+#define BABYSTEPPING
+#if ENABLED(BABYSTEPPING)
+ //#define BABYSTEP_WITHOUT_HOMING
+ //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
+ #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
+ #define BABYSTEP_MULTIPLICATOR 1 // Babysteps are very small. Increase for faster motion.
+
+ #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
+ #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
+ #define DOUBLECLICK_MAX_INTERVAL 2500 // Maximum interval between clicks, in milliseconds.
+ // Note: Extra time may be added to mitigate controller latency.
+ #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
+ //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle.
+ #if ENABLED(MOVE_Z_WHEN_IDLE)
+ #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size.
+ #endif
+ #endif
+
+ //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
+
+ //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
+ #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
+ //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
+ //#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
+ #endif
+#endif
+
+// @section extruder
+
+/**
+ * Linear Pressure Control v1.5
+ *
+ * Assumption: advance [steps] = k * (delta velocity [steps/s])
+ * K=0 means advance disabled.
+ *
+ * NOTE: K values for LIN_ADVANCE 1.5 differ from earlier versions!
+ *
+ * Set K around 0.22 for 3mm PLA Direct Drive with ~6.5cm between the drive gear and heatbreak.
+ * Larger K values will be needed for flexible filament and greater distances.
+ * If this algorithm produces a higher speed offset than the extruder can handle (compared to E jerk)
+ * print acceleration will be reduced during the affected moves to keep within the limit.
+ *
+ * See http://marlinfw.org/docs/features/lin_advance.html for full instructions.
+ * Mention @Sebastianv650 on GitHub to alert the author of any issues.
+ */
+//#define LIN_ADVANCE
+#if ENABLED(LIN_ADVANCE)
+ //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
+ #define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed
+ //#define LA_DEBUG // If enabled, this will generate debug information output over USB.
+#endif
+
+// @section leveling
+
+#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
+ // Override the mesh area if the automatic (max) area is too large
+ //#define MESH_MIN_X MESH_INSET
+ //#define MESH_MIN_Y MESH_INSET
+ //#define MESH_MAX_X X_BED_SIZE - (MESH_INSET)
+ //#define MESH_MAX_Y Y_BED_SIZE - (MESH_INSET)
+#endif
+
+/**
+ * Repeatedly attempt G29 leveling until it succeeds.
+ * Stop after G29_MAX_RETRIES attempts.
+ */
+//#define G29_RETRY_AND_RECOVER
+#if ENABLED(G29_RETRY_AND_RECOVER)
+ #define G29_MAX_RETRIES 3
+ #define G29_HALT_ON_FAILURE
+ /**
+ * Specify the GCODE commands that will be executed when leveling succeeds,
+ * between attempts, and after the maximum number of retries have been tried.
+ */
+ #define G29_SUCCESS_COMMANDS "M117 Bed leveling done."
+ #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0"
+ #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1"
+
+#endif
+
+// @section extras
+
+//
+// G2/G3 Arc Support
+//
+#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
+#if ENABLED(ARC_SUPPORT)
+ #define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
+ #define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
+ #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
+ //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
+ //#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
+#endif
+
+// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
+//#define BEZIER_CURVE_SUPPORT
+
+/**
+ * G38 Probe Target
+ *
+ * This option adds G38.2 and G38.3 (probe towards target)
+ * and optionally G38.4 and G38.5 (probe away from target).
+ * Set MULTIPLE_PROBING for G38 to probe more than once.
+ */
+//#define G38_PROBE_TARGET
+#if ENABLED(G38_PROBE_TARGET)
+ //#define G38_PROBE_AWAY // Include G38.4 and G38.5 to probe away from target
+ #define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move.
+#endif
+
+// Moves (or segments) with fewer steps than this will be joined with the next move
+#define MIN_STEPS_PER_SEGMENT 6
+
+/**
+ * Minimum delay after setting the stepper DIR (in ns)
+ * 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)
+ * 15000 : Minimum for TB6560 drivers (guess, no info in datasheet)
+ *
+ * Override the default value based on the driver type set in Configuration.h.
+ */
+//#define MINIMUM_STEPPER_DIR_DELAY 650
+
+/**
+ * Minimum stepper driver pulse width (in µs)
+ * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers
+ * 0 : Minimum 500ns for LV8729, adjusted in stepper.h
+ * 1 : Minimum for A4988 and A5984 stepper drivers
+ * 2 : Minimum for DRV8825 stepper drivers
+ * 3 : Minimum for TB6600 stepper drivers
+ * 30 : Minimum for TB6560 stepper drivers
+ *
+ * Override the default value based on the driver type set in Configuration.h.
+ */
+//#define MINIMUM_STEPPER_PULSE 2
+
+/**
+ * Maximum stepping rate (in Hz) the stepper driver allows
+ * If undefined, defaults to 1MHz / (2 * MINIMUM_STEPPER_PULSE)
+ * 500000 : Maximum for A4988 stepper driver
+ * 400000 : Maximum for TMC2xxx stepper drivers
+ * 250000 : Maximum for DRV8825 stepper driver
+ * 200000 : Maximum for LV8729 stepper driver
+ * 150000 : Maximum for TB6600 stepper driver
+ * 15000 : Maximum for TB6560 stepper driver
+ *
+ * Override the default value based on the driver type set in Configuration.h.
+ */
+//#define MAXIMUM_STEPPER_RATE 250000
+
+// @section temperature
+
+// Control heater 0 and heater 1 in parallel.
+//#define HEATERS_PARALLEL
+
+//===========================================================================
+//================================= Buffers =================================
+//===========================================================================
+
+// @section hidden
+
+// The number of linear motions that can be in the plan at any give time.
+// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2 (e.g. 8, 16, 32) because shifts and ors are used to do the ring-buffering.
+#if ENABLED(SDSUPPORT)
+ #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller
+#else
+ #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
+#endif
+
+// @section serial
+
+// The ASCII buffer for serial input
+#define MAX_CMD_SIZE 96
+#define BUFSIZE 4
+
+// Transmission to Host Buffer Size
+// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0.
+// To buffer a simple "ok" you need 4 bytes.
+// For ADVANCED_OK (M105) you need 32 bytes.
+// For debug-echo: 128 bytes for the optimal speed.
+// Other output doesn't need to be that speedy.
+// :[0, 2, 4, 8, 16, 32, 64, 128, 256]
+#define TX_BUFFER_SIZE 0
+
+// Host Receive Buffer Size
+// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
+// To use flow control, set this buffer size to at least 1024 bytes.
+// :[0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
+//#define RX_BUFFER_SIZE 1024
+
+#if RX_BUFFER_SIZE >= 1024
+ // Enable to have the controller send XON/XOFF control characters to
+ // the host to signal the RX buffer is becoming full.
+ //#define SERIAL_XON_XOFF
+#endif
+
+#if ENABLED(SDSUPPORT)
+ // Enable this option to collect and display the maximum
+ // RX queue usage after transferring a file to SD.
+ //#define SERIAL_STATS_MAX_RX_QUEUED
+
+ // Enable this option to collect and display the number
+ // of dropped bytes after a file transfer to SD.
+ //#define SERIAL_STATS_DROPPED_RX
+#endif
+
+// Enable an emergency-command parser to intercept certain commands as they
+// enter the serial receive buffer, so they cannot be blocked.
+// Currently handles M108, M112, M410
+// Does not work on boards using AT90USB (USBCON) processors!
+//#define EMERGENCY_PARSER
+
+// Bad Serial-connections can miss a received command by sending an 'ok'
+// Therefore some clients abort after 30 seconds in a timeout.
+// Some other clients start sending commands while receiving a 'wait'.
+// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
+//#define NO_TIMEOUTS 1000 // Milliseconds
+
+// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
+//#define ADVANCED_OK
+
+// Printrun may have trouble receiving long strings all at once.
+// This option inserts short delays between lines of serial output.
+#define SERIAL_OVERRUN_PROTECTION
+
+// @section extras
+
+/**
+ * Extra Fan Speed
+ * Adds a secondary fan speed for each print-cooling fan.
+ * 'M106 P T3-255' : Set a secondary speed for
+ * 'M106 P T2' : Use the set secondary speed
+ * 'M106 P T1' : Restore the previous fan speed
+ */
+//#define EXTRA_FAN_SPEED
+
+/**
+ * Firmware-based and LCD-controlled retract
+ *
+ * Add G10 / G11 commands for automatic firmware-based retract / recover.
+ * Use M207 and M208 to define parameters for retract / recover.
+ *
+ * Use M209 to enable or disable auto-retract.
+ * With auto-retract enabled, all G1 E moves within the set range
+ * will be converted to firmware-based retract/recover moves.
+ *
+ * Be sure to turn off auto-retract during filament change.
+ *
+ * Note that M207 / M208 / M209 settings are saved to EEPROM.
+ *
+ */
+//#define FWRETRACT
+#if ENABLED(FWRETRACT)
+ #define FWRETRACT_AUTORETRACT // costs ~500 bytes of PROGMEM
+ #if ENABLED(FWRETRACT_AUTORETRACT)
+ #define MIN_AUTORETRACT 0.1 // When auto-retract is on, convert E moves of this length and over
+ #define MAX_AUTORETRACT 10.0 // Upper limit for auto-retract conversion
+ #endif
+ #define RETRACT_LENGTH 3 // Default retract length (positive mm)
+ #define RETRACT_LENGTH_SWAP 13 // Default swap retract length (positive mm), for extruder change
+ #define RETRACT_FEEDRATE 45 // Default feedrate for retracting (mm/s)
+ #define RETRACT_ZRAISE 0 // Default retract Z-raise (mm)
+ #define RETRACT_RECOVER_LENGTH 0 // Default additional recover length (mm, added to retract length when recovering)
+ #define RETRACT_RECOVER_LENGTH_SWAP 0 // Default additional swap recover length (mm, added to retract length when recovering from extruder change)
+ #define RETRACT_RECOVER_FEEDRATE 8 // Default feedrate for recovering from retraction (mm/s)
+ #define RETRACT_RECOVER_FEEDRATE_SWAP 8 // Default feedrate for recovering from swap retraction (mm/s)
+ #if ENABLED(MIXING_EXTRUDER)
+ //#define RETRACT_SYNC_MIXING // Retract and restore all mixing steppers simultaneously
+ #endif
+#endif
+
+/**
+ * Universal tool change settings.
+ * Applies to all types of extruders except where explicitly noted.
+ */
+#if EXTRUDERS > 1
+ // Z raise distance for tool-change, as needed for some extruders
+ #define TOOLCHANGE_ZRAISE 2 // (mm)
+ //#define TOOLCHANGE_NO_RETURN // Never return to the previous position on tool-change
+
+ // Retract and prime filament on tool-change
+ //#define TOOLCHANGE_FILAMENT_SWAP
+ #if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
+ #define TOOLCHANGE_FIL_SWAP_LENGTH 12 // (mm)
+ #define TOOLCHANGE_FIL_EXTRA_PRIME 2 // (mm)
+ #define TOOLCHANGE_FIL_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ #define TOOLCHANGE_FIL_SWAP_PRIME_SPEED 3600 // (mm/m)
+ #endif
+
+ /**
+ * Position to park head during tool change.
+ * Doesn't apply to SWITCHING_TOOLHEAD, DUAL_X_CARRIAGE, or PARKING_EXTRUDER
+ */
+ //#define TOOLCHANGE_PARK
+ #if ENABLED(TOOLCHANGE_PARK)
+ #define TOOLCHANGE_PARK_XY { X_MIN_POS + 10, Y_MIN_POS + 10 }
+ #define TOOLCHANGE_PARK_XY_FEEDRATE 6000 // (mm/m)
+ #endif
+#endif
+
+/**
+ * Advanced Pause
+ * Experimental feature for filament change support and for parking the nozzle when paused.
+ * Adds the GCode M600 for initiating filament change.
+ * If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
+ *
+ * Requires an LCD display.
+ * Requires NOZZLE_PARK_FEATURE.
+ * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
+ */
+//#define ADVANCED_PAUSE_FEATURE
+#if ENABLED(ADVANCED_PAUSE_FEATURE)
+ #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
+ #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
+ // This short retract is done immediately, before parking the nozzle.
+ #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
+ #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ // Set to 0 for manual unloading.
+ #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
+ #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material.
+ // 0 to disable start loading and skip to fast load only
+ #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
+ #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
+ #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
+ // For Bowden, the full length of the tube and nozzle.
+ // For direct drive, the full length of the nozzle.
+ //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
+ #define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
+ #define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
+ // Set to 0 for manual extrusion.
+ // Filament can be extruded repeatedly from the Filament Change menu
+ // until extrusion is consistent, and to purge old filament.
+ #define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
+ //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
+
+ // Filament Unload does a Retract, Delay, and Purge first:
+ #define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
+ #define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
+ #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
+
+ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
+ #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
+ #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
+
+ //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
+ //#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change
+
+ //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
+ //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
+#endif
+
+// @section tmc
+
+/**
+ * TMC26X Stepper Driver options
+ *
+ * The TMC26XStepper library is required for this stepper driver.
+ * https://github.com/trinamic/TMC26XStepper
+ */
+#if HAS_DRIVER(TMC26X)
+
+ #if AXIS_DRIVER_TYPE_X(TMC26X)
+ #define X_MAX_CURRENT 1000 // (mA)
+ #define X_SENSE_RESISTOR 91 // (mOhms)
+ #define X_MICROSTEPS 16 // Number of microsteps
+ #endif
+
+ #if AXIS_DRIVER_TYPE_X2(TMC26X)
+ #define X2_MAX_CURRENT 1000
+ #define X2_SENSE_RESISTOR 91
+ #define X2_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Y(TMC26X)
+ #define Y_MAX_CURRENT 1000
+ #define Y_SENSE_RESISTOR 91
+ #define Y_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Y2(TMC26X)
+ #define Y2_MAX_CURRENT 1000
+ #define Y2_SENSE_RESISTOR 91
+ #define Y2_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z(TMC26X)
+ #define Z_MAX_CURRENT 1000
+ #define Z_SENSE_RESISTOR 91
+ #define Z_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z2(TMC26X)
+ #define Z2_MAX_CURRENT 1000
+ #define Z2_SENSE_RESISTOR 91
+ #define Z2_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z3(TMC26X)
+ #define Z3_MAX_CURRENT 1000
+ #define Z3_SENSE_RESISTOR 91
+ #define Z3_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E0(TMC26X)
+ #define E0_MAX_CURRENT 1000
+ #define E0_SENSE_RESISTOR 91
+ #define E0_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E1(TMC26X)
+ #define E1_MAX_CURRENT 1000
+ #define E1_SENSE_RESISTOR 91
+ #define E1_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E2(TMC26X)
+ #define E2_MAX_CURRENT 1000
+ #define E2_SENSE_RESISTOR 91
+ #define E2_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E3(TMC26X)
+ #define E3_MAX_CURRENT 1000
+ #define E3_SENSE_RESISTOR 91
+ #define E3_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E4(TMC26X)
+ #define E4_MAX_CURRENT 1000
+ #define E4_SENSE_RESISTOR 91
+ #define E4_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E5(TMC26X)
+ #define E5_MAX_CURRENT 1000
+ #define E5_SENSE_RESISTOR 91
+ #define E5_MICROSTEPS 16
+ #endif
+
+#endif // TMC26X
+
+// @section tmc_smart
+
+/**
+ * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 stepper drivers in SPI mode
+ * connect your SPI pins to the hardware SPI interface on your board and define
+ * the required CS pins in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3
+ * pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
+ * You may also use software SPI if you wish to use general purpose IO pins.
+ *
+ * To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN
+ * to the driver side PDN_UART pin with a 1K resistor.
+ * To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without
+ * a resistor.
+ * The drivers can also be used with hardware serial.
+ *
+ * TMCStepper library is required to use TMC stepper drivers.
+ * https://github.com/teemuatlut/TMCStepper
+ */
+#if HAS_TRINAMIC
+
+ #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current
+ #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
+
+ #if AXIS_IS_TMC(X)
+ #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
+ #define X_MICROSTEPS 16 // 0..256
+ #define X_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(X2)
+ #define X2_CURRENT 800
+ #define X2_MICROSTEPS 16
+ #define X2_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(Y)
+ #define Y_CURRENT 800
+ #define Y_MICROSTEPS 16
+ #define Y_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(Y2)
+ #define Y2_CURRENT 800
+ #define Y2_MICROSTEPS 16
+ #define Y2_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(Z)
+ #define Z_CURRENT 800
+ #define Z_MICROSTEPS 16
+ #define Z_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(Z2)
+ #define Z2_CURRENT 800
+ #define Z2_MICROSTEPS 16
+ #define Z2_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(Z3)
+ #define Z3_CURRENT 800
+ #define Z3_MICROSTEPS 16
+ #define Z3_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E0)
+ #define E0_CURRENT 800
+ #define E0_MICROSTEPS 16
+ #define E0_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E1)
+ #define E1_CURRENT 800
+ #define E1_MICROSTEPS 16
+ #define E1_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E2)
+ #define E2_CURRENT 800
+ #define E2_MICROSTEPS 16
+ #define E2_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E3)
+ #define E3_CURRENT 800
+ #define E3_MICROSTEPS 16
+ #define E3_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E4)
+ #define E4_CURRENT 800
+ #define E4_MICROSTEPS 16
+ #define E4_RSENSE 0.11
+ #endif
+
+ #if AXIS_IS_TMC(E5)
+ #define E5_CURRENT 800
+ #define E5_MICROSTEPS 16
+ #define E5_RSENSE 0.11
+ #endif
+
+ /**
+ * Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here.
+ * The default pins can be found in your board's pins file.
+ */
+ //#define X_CS_PIN -1
+ //#define Y_CS_PIN -1
+ //#define Z_CS_PIN -1
+ //#define X2_CS_PIN -1
+ //#define Y2_CS_PIN -1
+ //#define Z2_CS_PIN -1
+ //#define Z3_CS_PIN -1
+ //#define E0_CS_PIN -1
+ //#define E1_CS_PIN -1
+ //#define E2_CS_PIN -1
+ //#define E3_CS_PIN -1
+ //#define E4_CS_PIN -1
+ //#define E5_CS_PIN -1
+
+ /**
+ * Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
+ * The default SW SPI pins are defined the respective pins files,
+ * but you can override or define them here.
+ */
+ //#define TMC_USE_SW_SPI
+ //#define TMC_SW_MOSI -1
+ //#define TMC_SW_MISO -1
+ //#define TMC_SW_SCK -1
+
+ /**
+ * Four TMC2209 drivers can use the same HW/SW serial port with hardware configured addresses.
+ * Set the address using jumpers on pins MS1 and MS2.
+ * Address | MS1 | MS2
+ * 0 | LOW | LOW
+ * 1 | HIGH | LOW
+ * 2 | LOW | HIGH
+ * 3 | HIGH | HIGH
+ */
+ #define X_SLAVE_ADDRESS 0
+ #define Y_SLAVE_ADDRESS 0
+ #define Z_SLAVE_ADDRESS 0
+ #define X2_SLAVE_ADDRESS 0
+ #define Y2_SLAVE_ADDRESS 0
+ #define Z2_SLAVE_ADDRESS 0
+ #define Z3_SLAVE_ADDRESS 0
+ #define E0_SLAVE_ADDRESS 0
+ #define E1_SLAVE_ADDRESS 0
+ #define E2_SLAVE_ADDRESS 0
+ #define E3_SLAVE_ADDRESS 0
+ #define E4_SLAVE_ADDRESS 0
+ #define E5_SLAVE_ADDRESS 0
+
+ /**
+ * Software enable
+ *
+ * Use for drivers that do not use a dedicated enable pin, but rather handle the same
+ * function through a communication line such as SPI or UART.
+ */
+ //#define SOFTWARE_DRIVER_ENABLE
+
+ /**
+ * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
+ * Use Trinamic's ultra quiet stepping mode.
+ * When disabled, Marlin will use spreadCycle stepping mode.
+ */
+ #define STEALTHCHOP_XY
+ #define STEALTHCHOP_Z
+ #define STEALTHCHOP_E
+
+ /**
+ * Optimize spreadCycle chopper parameters by using predefined parameter sets
+ * or with the help of an example included in the library.
+ * Provided parameter sets are
+ * CHOPPER_DEFAULT_12V
+ * CHOPPER_DEFAULT_19V
+ * CHOPPER_DEFAULT_24V
+ * CHOPPER_DEFAULT_36V
+ * CHOPPER_PRUSAMK3_24V // Imported parameters from the official Prusa firmware for MK3 (24V)
+ * CHOPPER_MARLIN_119 // Old defaults from Marlin v1.1.9
+ *
+ * Define you own with
+ * { , , hysteresis_start[1..8] }
+ */
+ #define CHOPPER_TIMING CHOPPER_DEFAULT_12V
+
+ /**
+ * Monitor Trinamic drivers for error conditions,
+ * like overtemperature and short to ground.
+ * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
+ * Other detected conditions can be used to stop the current print.
+ * Relevant g-codes:
+ * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
+ * M911 - Report stepper driver overtemperature pre-warn condition.
+ * M912 - Clear stepper driver overtemperature pre-warn condition flag.
+ * M122 - Report driver parameters (Requires TMC_DEBUG)
+ */
+ //#define MONITOR_DRIVER_STATUS
+
+ #if ENABLED(MONITOR_DRIVER_STATUS)
+ #define CURRENT_STEP_DOWN 50 // [mA]
+ #define REPORT_CURRENT_CHANGE
+ #define STOP_ON_ERROR
+ #endif
+
+ /**
+ * TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
+ * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
+ * This mode allows for faster movements at the expense of higher noise levels.
+ * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD.
+ * M913 X/Y/Z/E to live tune the setting
+ */
+ //#define HYBRID_THRESHOLD
+
+ #define X_HYBRID_THRESHOLD 100 // [mm/s]
+ #define X2_HYBRID_THRESHOLD 100
+ #define Y_HYBRID_THRESHOLD 100
+ #define Y2_HYBRID_THRESHOLD 100
+ #define Z_HYBRID_THRESHOLD 3
+ #define Z2_HYBRID_THRESHOLD 3
+ #define Z3_HYBRID_THRESHOLD 3
+ #define E0_HYBRID_THRESHOLD 30
+ #define E1_HYBRID_THRESHOLD 30
+ #define E2_HYBRID_THRESHOLD 30
+ #define E3_HYBRID_THRESHOLD 30
+ #define E4_HYBRID_THRESHOLD 30
+ #define E5_HYBRID_THRESHOLD 30
+
+ /**
+ * TMC2130, TMC2160, TMC2209, TMC2660, TMC5130, and TMC5160 only
+ * Use StallGuard2 to sense an obstacle and trigger an endstop.
+ * Connect the stepper driver's DIAG1 pin to the X/Y endstop pin.
+ * X, Y, and Z homing will always be done in spreadCycle mode.
+ *
+ * X/Y/Z_STALL_SENSITIVITY is used for tuning the trigger sensitivity.
+ * Higher values make the system LESS sensitive.
+ * Lower value make the system MORE sensitive.
+ * Too low values can lead to false positives, while too high values will collide the axis without triggering.
+ * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
+ * M914 X/Y/Z to live tune the setting
+ */
+ //#define SENSORLESS_HOMING // StallGuard capable drivers only
+
+ /**
+ * Use StallGuard2 to probe the bed with the nozzle.
+ *
+ * CAUTION: This could cause damage to machines that use a lead screw or threaded rod
+ * to move the Z axis. Take extreme care when attempting to enable this feature.
+ */
+ //#define SENSORLESS_PROBING // StallGuard capable drivers only
+
+ #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
+ // TMC2209: 0...255. TMC2130: -64...63
+ #define X_STALL_SENSITIVITY 8
+ #define Y_STALL_SENSITIVITY 8
+ //#define Z_STALL_SENSITIVITY 8
+ #endif
+
+ /**
+ * Beta feature!
+ * Create a 50/50 square wave step pulse optimal for stepper drivers.
+ */
+ //#define SQUARE_WAVE_STEPPING
+
+ /**
+ * Enable M122 debugging command for TMC stepper drivers.
+ * M122 S0/1 will enable continous reporting.
+ */
+ //#define TMC_DEBUG
+
+ /**
+ * You can set your own advanced settings by filling in predefined functions.
+ * A list of available functions can be found on the library github page
+ * https://github.com/teemuatlut/TMCStepper
+ *
+ * Example:
+ * #define TMC_ADV() { \
+ * stepperX.diag0_temp_prewarn(1); \
+ * stepperY.interpolate(0); \
+ * }
+ */
+ #define TMC_ADV() { }
+
+#endif // HAS_TRINAMIC
+
+// @section L6470
+
+/**
+ * L6470 Stepper Driver options
+ *
+ * Arduino-L6470 library (0.7.0 or higher) is required for this stepper driver.
+ * https://github.com/ameyer/Arduino-L6470
+ *
+ * Requires the following to be defined in your pins_YOUR_BOARD file
+ * L6470_CHAIN_SCK_PIN
+ * L6470_CHAIN_MISO_PIN
+ * L6470_CHAIN_MOSI_PIN
+ * L6470_CHAIN_SS_PIN
+ * L6470_RESET_CHAIN_PIN (optional)
+ */
+#if HAS_DRIVER(L6470)
+
+ //#define L6470_CHITCHAT // Display additional status info
+
+ #if AXIS_DRIVER_TYPE_X(L6470)
+ #define X_MICROSTEPS 128 // Number of microsteps (VALID: 1, 2, 4, 8, 16, 32, 128)
+ #define X_OVERCURRENT 2000 // (mA) Current where the driver detects an over current (VALID: 375 x (1 - 16) - 6A max - rounds down)
+ #define X_STALLCURRENT 1500 // (mA) Current where the driver detects a stall (VALID: 31.25 * (1-128) - 4A max - rounds down)
+ #define X_MAX_VOLTAGE 127 // 0-255, Maximum effective voltage seen by stepper
+ #define X_CHAIN_POS 0 // Position in SPI chain, 0=Not in chain, 1=Nearest MOSI
+ #endif
+
+ #if AXIS_DRIVER_TYPE_X2(L6470)
+ #define X2_MICROSTEPS 128
+ #define X2_OVERCURRENT 2000
+ #define X2_STALLCURRENT 1500
+ #define X2_MAX_VOLTAGE 127
+ #define X2_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Y(L6470)
+ #define Y_MICROSTEPS 128
+ #define Y_OVERCURRENT 2000
+ #define Y_STALLCURRENT 1500
+ #define Y_MAX_VOLTAGE 127
+ #define Y_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Y2(L6470)
+ #define Y2_MICROSTEPS 128
+ #define Y2_OVERCURRENT 2000
+ #define Y2_STALLCURRENT 1500
+ #define Y2_MAX_VOLTAGE 127
+ #define Y2_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z(L6470)
+ #define Z_MICROSTEPS 128
+ #define Z_OVERCURRENT 2000
+ #define Z_STALLCURRENT 1500
+ #define Z_MAX_VOLTAGE 127
+ #define Z_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z2(L6470)
+ #define Z2_MICROSTEPS 128
+ #define Z2_OVERCURRENT 2000
+ #define Z2_STALLCURRENT 1500
+ #define Z2_MAX_VOLTAGE 127
+ #define Z2_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_Z3(L6470)
+ #define Z3_MICROSTEPS 128
+ #define Z3_OVERCURRENT 2000
+ #define Z3_STALLCURRENT 1500
+ #define Z3_MAX_VOLTAGE 127
+ #define Z3_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E0(L6470)
+ #define E0_MICROSTEPS 128
+ #define E0_OVERCURRENT 2000
+ #define E0_STALLCURRENT 1500
+ #define E0_MAX_VOLTAGE 127
+ #define E0_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E1(L6470)
+ #define E1_MICROSTEPS 128
+ #define E1_OVERCURRENT 2000
+ #define E1_STALLCURRENT 1500
+ #define E1_MAX_VOLTAGE 127
+ #define E1_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E2(L6470)
+ #define E2_MICROSTEPS 128
+ #define E2_OVERCURRENT 2000
+ #define E2_STALLCURRENT 1500
+ #define E2_MAX_VOLTAGE 127
+ #define E2_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E3(L6470)
+ #define E3_MICROSTEPS 128
+ #define E3_OVERCURRENT 2000
+ #define E3_STALLCURRENT 1500
+ #define E3_MAX_VOLTAGE 127
+ #define E3_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E4(L6470)
+ #define E4_MICROSTEPS 128
+ #define E4_OVERCURRENT 2000
+ #define E4_STALLCURRENT 1500
+ #define E4_MAX_VOLTAGE 127
+ #define E4_CHAIN_POS 0
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E5(L6470)
+ #define E5_MICROSTEPS 128
+ #define E5_OVERCURRENT 2000
+ #define E5_STALLCURRENT 1500
+ #define E5_MAX_VOLTAGE 127
+ #define E5_CHAIN_POS 0
+ #endif
+
+ /**
+ * Monitor L6470 drivers for error conditions like over temperature and over current.
+ * In the case of over temperature Marlin can decrease the drive until the error condition clears.
+ * Other detected conditions can be used to stop the current print.
+ * Relevant g-codes:
+ * M906 - I1/2/3/4/5 Set or get motor drive level using axis codes X, Y, Z, E. Report values if no axis codes given.
+ * I not present or I0 or I1 - X, Y, Z or E0
+ * I2 - X2, Y2, Z2 or E1
+ * I3 - Z3 or E3
+ * I4 - E4
+ * I5 - E5
+ * M916 - Increase drive level until get thermal warning
+ * M917 - Find minimum current thresholds
+ * M918 - Increase speed until max or error
+ * M122 S0/1 - Report driver parameters
+ */
+ //#define MONITOR_L6470_DRIVER_STATUS
+
+ #if ENABLED(MONITOR_L6470_DRIVER_STATUS)
+ #define KVAL_HOLD_STEP_DOWN 1
+ //#define L6470_STOP_ON_ERROR
+ #endif
+
+#endif // L6470
+
+/**
+ * TWI/I2C BUS
+ *
+ * This feature is an EXPERIMENTAL feature so it shall not be used on production
+ * machines. Enabling this will allow you to send and receive I2C data from slave
+ * devices on the bus.
+ *
+ * ; Example #1
+ * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
+ * ; It uses multiple M260 commands with one B arg
+ * M260 A99 ; Target slave address
+ * M260 B77 ; M
+ * M260 B97 ; a
+ * M260 B114 ; r
+ * M260 B108 ; l
+ * M260 B105 ; i
+ * M260 B110 ; n
+ * M260 S1 ; Send the current buffer
+ *
+ * ; Example #2
+ * ; Request 6 bytes from slave device with address 0x63 (99)
+ * M261 A99 B5
+ *
+ * ; Example #3
+ * ; Example serial output of a M261 request
+ * echo:i2c-reply: from:99 bytes:5 data:hello
+ */
+
+// @section i2cbus
+
+//#define EXPERIMENTAL_I2CBUS
+#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
+
+// @section extras
+
+/**
+ * Photo G-code
+ * Add the M240 G-code to take a photo.
+ * The photo can be triggered by a digital pin or a physical movement.
+ */
+//#define PHOTO_GCODE
+#if ENABLED(PHOTO_GCODE)
+ // A position to move to (and raise Z) before taking the photo
+ //#define PHOTO_POSITION { X_MAX_POS - 5, Y_MAX_POS, 0 } // { xpos, ypos, zraise } (M240 X Y Z)
+ //#define PHOTO_DELAY_MS 100 // (ms) Duration to pause before moving back (M240 P)
+ //#define PHOTO_RETRACT_MM 6.5 // (mm) E retract/recover for the photo move (M240 R S)
+
+ // Canon RC-1 or homebrew digital camera trigger
+ // Data from: http://www.doc-diy.net/photo/rc-1_hacked/
+ //#define PHOTOGRAPH_PIN 23
+
+ // Canon Hack Development Kit
+ // http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
+ //#define CHDK_PIN 4
+
+ // Optional second move with delay to trigger the camera shutter
+ //#define PHOTO_SWITCH_POSITION { X_MAX_POS, Y_MAX_POS } // { xpos, ypos } (M240 I J)
+
+ // Duration to hold the switch or keep CHDK_PIN high
+ //#define PHOTO_SWITCH_MS 50 // (ms) (M240 D)
+#endif
+
+/**
+ * Spindle & Laser control
+ *
+ * Add the M3, M4, and M5 commands to turn the spindle/laser on and off, and
+ * to set spindle speed, spindle direction, and laser power.
+ *
+ * SuperPid is a router/spindle speed controller used in the CNC milling community.
+ * Marlin can be used to turn the spindle on and off. It can also be used to set
+ * the spindle speed from 5,000 to 30,000 RPM.
+ *
+ * You'll need to select a pin for the ON/OFF function and optionally choose a 0-5V
+ * hardware PWM pin for the speed control and a pin for the rotation direction.
+ *
+ * See http://marlinfw.org/docs/configuration/laser_spindle.html for more config details.
+ */
+//#define SPINDLE_FEATURE
+//#define LASER_FEATURE
+#if EITHER(SPINDLE_FEATURE, LASER_FEATURE)
+ #define SPINDLE_LASER_ACTIVE_HIGH false // Set to "true" if the on/off function is active HIGH
+ #define SPINDLE_LASER_PWM true // Set to "true" if your controller supports setting the speed/power
+ #define SPINDLE_LASER_PWM_INVERT true // Set to "true" if the speed/power goes up when you want it to go slower
+ #define SPINDLE_LASER_POWERUP_DELAY 5000 // (ms) Delay to allow the spindle/laser to come up to speed/power
+ #define SPINDLE_LASER_POWERDOWN_DELAY 5000 // (ms) Delay to allow the spindle to stop
+
+ #if ENABLED(SPINDLE_FEATURE)
+ //#define SPINDLE_CHANGE_DIR // Enable if your spindle controller can change spindle direction
+ #define SPINDLE_CHANGE_DIR_STOP // Enable if the spindle should stop before changing spin direction
+ #define SPINDLE_INVERT_DIR false // Set to "true" if the spin direction is reversed
+
+ /**
+ * The M3 & M4 commands use the following equation to convert PWM duty cycle to speed/power
+ *
+ * SPEED/POWER = PWM duty cycle * SPEED_POWER_SLOPE + SPEED_POWER_INTERCEPT
+ * where PWM duty cycle varies from 0 to 255
+ *
+ * set the following for your controller (ALL MUST BE SET)
+ */
+ #define SPEED_POWER_SLOPE 118.4
+ #define SPEED_POWER_INTERCEPT 0
+ #define SPEED_POWER_MIN 5000
+ #define SPEED_POWER_MAX 30000 // SuperPID router controller 0 - 30,000 RPM
+ #else
+ #define SPEED_POWER_SLOPE 0.3922
+ #define SPEED_POWER_INTERCEPT 0
+ #define SPEED_POWER_MIN 10
+ #define SPEED_POWER_MAX 100 // 0-100%
+ #endif
+#endif
+
+/**
+ * Coolant Control
+ *
+ * Add the M7, M8, and M9 commands to turn mist or flood coolant on and off.
+ *
+ * Note: COOLANT_MIST_PIN and/or COOLANT_FLOOD_PIN must also be defined.
+ */
+//#define COOLANT_CONTROL
+#if ENABLED(COOLANT_CONTROL)
+ #define COOLANT_MIST // Enable if mist coolant is present
+ #define COOLANT_FLOOD // Enable if flood coolant is present
+ #define COOLANT_MIST_INVERT false // Set "true" if the on/off function is reversed
+ #define COOLANT_FLOOD_INVERT false // Set "true" if the on/off function is reversed
+#endif
+
+/**
+ * Filament Width Sensor
+ *
+ * Measures the filament width in real-time and adjusts
+ * flow rate to compensate for any irregularities.
+ *
+ * Also allows the measured filament diameter to set the
+ * extrusion rate, so the slicer only has to specify the
+ * volume.
+ *
+ * Only a single extruder is supported at this time.
+ *
+ * 34 RAMPS_14 : Analog input 5 on the AUX2 connector
+ * 81 PRINTRBOARD : Analog input 2 on the Exp1 connector (version B,C,D,E)
+ * 301 RAMBO : Analog input 3
+ *
+ * Note: May require analog pins to be defined for other boards.
+ */
+//#define FILAMENT_WIDTH_SENSOR
+
+#if ENABLED(FILAMENT_WIDTH_SENSOR)
+ #define FILAMENT_SENSOR_EXTRUDER_NUM 0 // Index of the extruder that has the filament sensor. :[0,1,2,3,4]
+ #define MEASUREMENT_DELAY_CM 14 // (cm) The distance from the filament sensor to the melting chamber
+
+ #define FILWIDTH_ERROR_MARGIN 1.0 // (mm) If a measurement differs too much from nominal width ignore it
+ #define MAX_MEASUREMENT_DELAY 20 // (bytes) Buffer size for stored measurements (1 byte per cm). Must be larger than MEASUREMENT_DELAY_CM.
+
+ #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA // Set measured to nominal initially
+
+ // Display filament width on the LCD status line. Status messages will expire after 5 seconds.
+ //#define FILAMENT_LCD_DISPLAY
+#endif
+
+/**
+ * CNC Coordinate Systems
+ *
+ * Enables G53 and G54-G59.3 commands to select coordinate systems
+ * and G92.1 to reset the workspace to native machine space.
+ */
+//#define CNC_COORDINATE_SYSTEMS
+
+/**
+ * Auto-report temperatures with M155 S
+ */
+#define AUTO_REPORT_TEMPERATURES
+
+/**
+ * Include capabilities in M115 output
+ */
+#define EXTENDED_CAPABILITIES_REPORT
+
+/**
+ * Disable all Volumetric extrusion options
+ */
+//#define NO_VOLUMETRICS
+
+#if DISABLED(NO_VOLUMETRICS)
+ /**
+ * Volumetric extrusion default state
+ * Activate to make volumetric extrusion the default method,
+ * with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter.
+ *
+ * M200 D0 to disable, M200 Dn to set a new diameter.
+ */
+ //#define VOLUMETRIC_DEFAULT_ON
+#endif
+
+/**
+ * Enable this option for a leaner build of Marlin that removes all
+ * workspace offsets, simplifying coordinate transformations, leveling, etc.
+ *
+ * - M206 and M428 are disabled.
+ * - G92 will revert to its behavior from Marlin 1.0.
+ */
+//#define NO_WORKSPACE_OFFSETS
+
+/**
+ * Set the number of proportional font spaces required to fill up a typical character space.
+ * This can help to better align the output of commands like `G29 O` Mesh Output.
+ *
+ * For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
+ * Otherwise, adjust according to your client and font.
+ */
+#define PROPORTIONAL_FONT_RATIO 1.0
+
+/**
+ * Spend 28 bytes of SRAM to optimize the GCode parser
+ */
+#define FASTER_GCODE_PARSER
+
+/**
+ * CNC G-code options
+ * Support CNC-style G-code dialects used by laser cutters, drawing machine cams, etc.
+ * Note that G0 feedrates should be used with care for 3D printing (if used at all).
+ * High feedrates may cause ringing and harm print quality.
+ */
+//#define PAREN_COMMENTS // Support for parentheses-delimited comments
+//#define GCODE_MOTION_MODES // Remember the motion mode (G0 G1 G2 G3 G5 G38.X) and apply for X Y Z E F, etc.
+
+// Enable and set a (default) feedrate for all G0 moves
+//#define G0_FEEDRATE 3000 // (mm/m)
+#ifdef G0_FEEDRATE
+ //#define VARIABLE_G0_FEEDRATE // The G0 feedrate is set by F in G0 motion mode
+#endif
+
+/**
+ * G-code Macros
+ *
+ * Add G-codes M810-M819 to define and run G-code macros.
+ * Macros are not saved to EEPROM.
+ */
+//#define GCODE_MACROS
+#if ENABLED(GCODE_MACROS)
+ #define GCODE_MACROS_SLOTS 5 // Up to 10 may be used
+ #define GCODE_MACROS_SLOT_SIZE 50 // Maximum length of a single macro
+#endif
+
+/**
+ * User-defined menu items that execute custom GCode
+ */
+//#define CUSTOM_USER_MENUS
+#if ENABLED(CUSTOM_USER_MENUS)
+ //#define CUSTOM_USER_MENU_TITLE "Custom Commands"
+ #define USER_SCRIPT_DONE "M117 User Script Done"
+ #define USER_SCRIPT_AUDIBLE_FEEDBACK
+ //#define USER_SCRIPT_RETURN // Return to status screen after a script
+
+ #define USER_DESC_1 "Home & UBL Info"
+ #define USER_GCODE_1 "G28\nG29 W"
+
+ #define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL
+ #define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
+
+ #define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL
+ #define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
+
+ #define USER_DESC_4 "Heat Bed/Home/Level"
+ #define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29"
+
+ #define USER_DESC_5 "Home & Info"
+ #define USER_GCODE_5 "G28\nM503"
+#endif
+
+/**
+ * Host Action Commands
+ *
+ * Define host streamer action commands in compliance with the standard.
+ *
+ * See https://reprap.org/wiki/G-code#Action_commands
+ * Common commands ........ poweroff, pause, paused, resume, resumed, cancel
+ * G29_RETRY_AND_RECOVER .. probe_rewipe, probe_failed
+ *
+ * Some features add reason codes to extend these commands.
+ *
+ * Host Prompt Support enables Marlin to use the host for user prompts so
+ * filament runout and other processes can be managed from the host side.
+ */
+//#define HOST_ACTION_COMMANDS
+#if ENABLED(HOST_ACTION_COMMANDS)
+ //#define HOST_PROMPT_SUPPORT
+#endif
+
+//===========================================================================
+//====================== I2C Position Encoder Settings ======================
+//===========================================================================
+
+/**
+ * I2C position encoders for closed loop control.
+ * Developed by Chris Barr at Aus3D.
+ *
+ * Wiki: http://wiki.aus3d.com.au/Magnetic_Encoder
+ * Github: https://github.com/Aus3D/MagneticEncoder
+ *
+ * Supplier: http://aus3d.com.au/magnetic-encoder-module
+ * Alternative Supplier: http://reliabuild3d.com/
+ *
+ * Reliabuild encoders have been modified to improve reliability.
+ */
+
+//#define I2C_POSITION_ENCODERS
+#if ENABLED(I2C_POSITION_ENCODERS)
+
+ #define I2CPE_ENCODER_CNT 1 // The number of encoders installed; max of 5
+ // encoders supported currently.
+
+ #define I2CPE_ENC_1_ADDR I2CPE_PRESET_ADDR_X // I2C address of the encoder. 30-200.
+ #define I2CPE_ENC_1_AXIS X_AXIS // Axis the encoder module is installed on. _AXIS.
+ #define I2CPE_ENC_1_TYPE I2CPE_ENC_TYPE_LINEAR // Type of encoder: I2CPE_ENC_TYPE_LINEAR -or-
+ // I2CPE_ENC_TYPE_ROTARY.
+ #define I2CPE_ENC_1_TICKS_UNIT 2048 // 1024 for magnetic strips with 2mm poles; 2048 for
+ // 1mm poles. For linear encoders this is ticks / mm,
+ // for rotary encoders this is ticks / revolution.
+ //#define I2CPE_ENC_1_TICKS_REV (16 * 200) // Only needed for rotary encoders; number of stepper
+ // steps per full revolution (motor steps/rev * microstepping)
+ //#define I2CPE_ENC_1_INVERT // Invert the direction of axis travel.
+ #define I2CPE_ENC_1_EC_METHOD I2CPE_ECM_MICROSTEP // Type of error error correction.
+ #define I2CPE_ENC_1_EC_THRESH 0.10 // Threshold size for error (in mm) above which the
+ // printer will attempt to correct the error; errors
+ // smaller than this are ignored to minimize effects of
+ // measurement noise / latency (filter).
+
+ #define I2CPE_ENC_2_ADDR I2CPE_PRESET_ADDR_Y // Same as above, but for encoder 2.
+ #define I2CPE_ENC_2_AXIS Y_AXIS
+ #define I2CPE_ENC_2_TYPE I2CPE_ENC_TYPE_LINEAR
+ #define I2CPE_ENC_2_TICKS_UNIT 2048
+ //#define I2CPE_ENC_2_TICKS_REV (16 * 200)
+ //#define I2CPE_ENC_2_INVERT
+ #define I2CPE_ENC_2_EC_METHOD I2CPE_ECM_MICROSTEP
+ #define I2CPE_ENC_2_EC_THRESH 0.10
+
+ #define I2CPE_ENC_3_ADDR I2CPE_PRESET_ADDR_Z // Encoder 3. Add additional configuration options
+ #define I2CPE_ENC_3_AXIS Z_AXIS // as above, or use defaults below.
+
+ #define I2CPE_ENC_4_ADDR I2CPE_PRESET_ADDR_E // Encoder 4.
+ #define I2CPE_ENC_4_AXIS E_AXIS
+
+ #define I2CPE_ENC_5_ADDR 34 // Encoder 5.
+ #define I2CPE_ENC_5_AXIS E_AXIS
+
+ // Default settings for encoders which are enabled, but without settings configured above.
+ #define I2CPE_DEF_TYPE I2CPE_ENC_TYPE_LINEAR
+ #define I2CPE_DEF_ENC_TICKS_UNIT 2048
+ #define I2CPE_DEF_TICKS_REV (16 * 200)
+ #define I2CPE_DEF_EC_METHOD I2CPE_ECM_NONE
+ #define I2CPE_DEF_EC_THRESH 0.1
+
+ //#define I2CPE_ERR_THRESH_ABORT 100.0 // Threshold size for error (in mm) error on any given
+ // axis after which the printer will abort. Comment out to
+ // disable abort behavior.
+
+ #define I2CPE_TIME_TRUSTED 10000 // After an encoder fault, there must be no further fault
+ // for this amount of time (in ms) before the encoder
+ // is trusted again.
+
+ /**
+ * Position is checked every time a new command is executed from the buffer but during long moves,
+ * this setting determines the minimum update time between checks. A value of 100 works well with
+ * error rolling average when attempting to correct only for skips and not for vibration.
+ */
+ #define I2CPE_MIN_UPD_TIME_MS 4 // (ms) Minimum time between encoder checks.
+
+ // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
+ #define I2CPE_ERR_ROLLING_AVERAGE
+
+#endif // I2C_POSITION_ENCODERS
+
+/**
+ * MAX7219 Debug Matrix
+ *
+ * Add support for a low-cost 8x8 LED Matrix based on the Max7219 chip as a realtime status display.
+ * Requires 3 signal wires. Some useful debug options are included to demonstrate its usage.
+ */
+//#define MAX7219_DEBUG
+#if ENABLED(MAX7219_DEBUG)
+ #define MAX7219_CLK_PIN 64
+ #define MAX7219_DIN_PIN 57
+ #define MAX7219_LOAD_PIN 44
+
+ //#define MAX7219_GCODE // Add the M7219 G-code to control the LED matrix
+ #define MAX7219_INIT_TEST 2 // Do a test pattern at initialization (Set to 2 for spiral)
+ #define MAX7219_NUMBER_UNITS 1 // Number of Max7219 units in chain.
+ #define MAX7219_ROTATE 0 // Rotate the display clockwise (in multiples of +/- 90°)
+ // connector at: right=0 bottom=-90 top=90 left=180
+ //#define MAX7219_REVERSE_ORDER // The individual LED matrix units may be in reversed order
+
+ /**
+ * Sample debug features
+ * If you add more debug displays, be careful to avoid conflicts!
+ */
+ #define MAX7219_DEBUG_PRINTER_ALIVE // Blink corner LED of 8x8 matrix to show that the firmware is functioning
+ #define MAX7219_DEBUG_PLANNER_HEAD 3 // Show the planner queue head position on this and the next LED matrix row
+ #define MAX7219_DEBUG_PLANNER_TAIL 5 // Show the planner queue tail position on this and the next LED matrix row
+
+ #define MAX7219_DEBUG_PLANNER_QUEUE 0 // Show the current planner queue depth on this and the next LED matrix row
+ // If you experience stuttering, reboots, etc. this option can reveal how
+ // tweaks made to the configuration are affecting the printer in real-time.
+#endif
+
+/**
+ * NanoDLP Sync support
+ *
+ * Add support for Synchronized Z moves when using with NanoDLP. G0/G1 axis moves will output "Z_move_comp"
+ * string to enable synchronization with DLP projector exposure. This change will allow to use
+ * [[WaitForDoneMessage]] instead of populating your gcode with M400 commands
+ */
+//#define NANODLP_Z_SYNC
+#if ENABLED(NANODLP_Z_SYNC)
+ //#define NANODLP_ALL_AXIS // Enables "Z_move_comp" output on any axis move.
+ // Default behavior is limited to Z axis only.
+#endif
+
+/**
+ * WiFi Support (Espressif ESP32 WiFi)
+ */
+//#define WIFISUPPORT
+#if ENABLED(WIFISUPPORT)
+ #define WIFI_SSID "Wifi SSID"
+ #define WIFI_PWD "Wifi Password"
+ //#define WEBSUPPORT // Start a webserver with auto-discovery
+ //#define OTASUPPORT // Support over-the-air firmware updates
+#endif
+
+/**
+ * Prusa Multi-Material Unit v2
+ * Enable in Configuration.h
+ */
+#if ENABLED(PRUSA_MMU2)
+
+ // Serial port used for communication with MMU2.
+ // For AVR enable the UART port used for the MMU. (e.g., internalSerial)
+ // For 32-bit boards check your HAL for available serial ports. (e.g., Serial2)
+ #define INTERNAL_SERIAL_PORT 2
+ #define MMU2_SERIAL internalSerial
+
+ // Use hardware reset for MMU if a pin is defined for it
+ //#define MMU2_RST_PIN 23
+
+ // Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
+ //#define MMU2_MODE_12V
+
+ // G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
+ #define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
+
+ // Add an LCD menu for MMU2
+ //#define MMU2_MENUS
+ #if ENABLED(MMU2_MENUS)
+ // Settings for filament load / unload from the LCD menu.
+ // This is for Prusa MK3-style extruders. Customize for your hardware.
+ #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
+ #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
+ { 7.2, 562 }, \
+ { 14.4, 871 }, \
+ { 36.0, 1393 }, \
+ { 14.4, 871 }, \
+ { 50.0, 198 }
+
+ #define MMU2_RAMMING_SEQUENCE \
+ { 1.0, 1000 }, \
+ { 1.0, 1500 }, \
+ { 2.0, 2000 }, \
+ { 1.5, 3000 }, \
+ { 2.5, 4000 }, \
+ { -15.0, 5000 }, \
+ { -14.0, 1200 }, \
+ { -6.0, 600 }, \
+ { 10.0, 700 }, \
+ { -10.0, 400 }, \
+ { -50.0, 2000 }
+
+ #endif
+
+ //#define MMU2_DEBUG // Write debug info to serial output
+
+#endif // PRUSA_MMU2
+
+/**
+ * Advanced Print Counter settings
+ */
+#if ENABLED(PRINTCOUNTER)
+ #define SERVICE_WARNING_BUZZES 3
+ // Activate up to 3 service interval watchdogs
+ //#define SERVICE_NAME_1 "Service S"
+ //#define SERVICE_INTERVAL_1 100 // print hours
+ //#define SERVICE_NAME_2 "Service L"
+ //#define SERVICE_INTERVAL_2 200 // print hours
+ //#define SERVICE_NAME_3 "Service 3"
+ //#define SERVICE_INTERVAL_3 1 // print hours
+#endif
+
+// @section develop
+
+/**
+ * M43 - display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins
+ */
+//#define PINS_DEBUGGING
+
+// Enable Marlin dev mode which adds some special commands
+//#define MARLIN_DEV_MODE
diff --git a/config/examples/adafruit/ST7565/Configuration.h b/config/examples/adafruit/ST7565/Configuration.h
index 516726a404..0abe473002 100644
--- a/config/examples/adafruit/ST7565/Configuration.h
+++ b/config/examples/adafruit/ST7565/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1909,31 +1907,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1967,15 +1946,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1988,6 +1958,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration.h b/config/examples/delta/Anycubic/Kossel/Configuration.h
index 1392ec292f..e94a309ae4 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -144,18 +144,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_TRIGORILLA_14
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "ANYCUBIC Kossel"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2097,31 +2095,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2155,15 +2134,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2176,6 +2146,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index 9f6f5cd8c6..eb35ec3410 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "FLSUN Kossel"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2037,31 +2035,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2095,15 +2074,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2116,6 +2086,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/FLSUN/kossel/Configuration.h b/config/examples/delta/FLSUN/kossel/Configuration.h
index 16661d3ec8..32cb149a91 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "FLSUN Kossel"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2036,31 +2034,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2094,15 +2073,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2115,6 +2085,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index 3e8b03071a..1d8d292545 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Mini Kossel"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2036,31 +2034,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2094,15 +2073,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2115,6 +2085,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration.h b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
index 4dfe30e879..ca55a6a8e1 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration.h
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_GTM32_PRO_VB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Rostock 301"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2025,31 +2023,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2083,15 +2062,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2104,6 +2074,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/Hatchbox_Alpha/Configuration.h b/config/examples/delta/Hatchbox_Alpha/Configuration.h
index feec2c3d70..4cb0cfa186 100644
--- a/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -134,18 +134,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_13
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Hatchbox Alpha"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2039,31 +2037,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2097,15 +2076,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2118,6 +2088,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/MKS/SBASE/Configuration.h b/config/examples/delta/MKS/SBASE/Configuration.h
index fa07ec2109..df0651242c 100644
--- a/config/examples/delta/MKS/SBASE/Configuration.h
+++ b/config/examples/delta/MKS/SBASE/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_SBASE
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Deltabot"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2024,31 +2022,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2082,15 +2061,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2103,6 +2073,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/Tevo Little Monster/Configuration.h b/config/examples/delta/Tevo Little Monster/Configuration.h
index e213a56292..c2faf384c5 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration.h
+++ b/config/examples/delta/Tevo Little Monster/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MKS_GEN_L
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "TEVO Little Monster"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2028,31 +2026,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2086,15 +2065,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2107,6 +2077,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/generic/Configuration.h b/config/examples/delta/generic/Configuration.h
index ae6da01866..5bd8dd3c3a 100644
--- a/config/examples/delta/generic/Configuration.h
+++ b/config/examples/delta/generic/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Deltabot"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2024,31 +2022,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2082,15 +2061,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2103,6 +2073,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/kossel_mini/Configuration.h b/config/examples/delta/kossel_mini/Configuration.h
index 90cdc72431..3e7b3429b5 100644
--- a/config/examples/delta/kossel_mini/Configuration.h
+++ b/config/examples/delta/kossel_mini/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Mini Kossel"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2026,31 +2024,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2084,15 +2063,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2105,6 +2075,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/kossel_pro/Configuration.h b/config/examples/delta/kossel_pro/Configuration.h
index cdde15b553..ddcc90cbbc 100644
--- a/config/examples/delta/kossel_pro/Configuration.h
+++ b/config/examples/delta/kossel_pro/Configuration.h
@@ -133,18 +133,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BRAINWAVE_PRO
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Kossel Pro"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2027,31 +2025,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2085,15 +2064,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2106,6 +2076,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/delta/kossel_xl/Configuration.h b/config/examples/delta/kossel_xl/Configuration.h
index 3a0b646765..dfde4098bc 100644
--- a/config/examples/delta/kossel_xl/Configuration.h
+++ b/config/examples/delta/kossel_xl/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "Kossel k800XL"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -2027,31 +2025,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -2085,15 +2064,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2106,6 +2076,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/gCreate/gMax1.5+/Configuration.h b/config/examples/gCreate/gMax1.5+/Configuration.h
index 4ef7534cfd..d04f5b0259 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration.h
@@ -129,8 +129,7 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
//#define MOTHERBOARD BOARD_RAMPS_14_EEF
#define MOTHERBOARD BOARD_RAMPS_14_EFB // gMax users please note: This is a Roxy modification. I print on glass and
@@ -140,12 +139,11 @@
// temp.
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "gMax"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1923,31 +1921,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1981,15 +1960,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -2002,6 +1972,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/makibox/Configuration.h b/config/examples/makibox/Configuration.h
index 4f23a20a3a..f8ecfa87f3 100644
--- a/config/examples/makibox/Configuration.h
+++ b/config/examples/makibox/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_5DPRINT
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
#define CUSTOM_MACHINE_NAME "MakiBox"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1912,31 +1910,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1970,15 +1949,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1991,6 +1961,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/tvrrug/Round2/Configuration.h b/config/examples/tvrrug/Round2/Configuration.h
index 7e9ba45d2f..56d1ff36b9 100644
--- a/config/examples/tvrrug/Round2/Configuration.h
+++ b/config/examples/tvrrug/Round2/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_OMCA
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
// @section extruder
@@ -1904,31 +1902,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1962,15 +1941,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1983,6 +1953,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/config/examples/wt150/Configuration.h b/config/examples/wt150/Configuration.h
index e7a117920b..c2b1e18bf7 100644
--- a/config/examples/wt150/Configuration.h
+++ b/config/examples/wt150/Configuration.h
@@ -129,18 +129,16 @@
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
-// The following define selects which electronics board you have.
-// Please choose the name from boards.h that matches your setup
+// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_MIGHTYBOARD_REVE
#endif
-// Optional custom name for your RepStrap or other custom machine
-// Displayed in the LCD "Ready" message
+// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "Weistek WT150"
-// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
-// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
+// Printer's unique ID, used by some programs to differentiate between machines.
+// Choose your own or use a service like http://www.uuidgenerator.net/version4
//#define MACHINE_UUID "5f0bb7a3-0e14-428c-812b-15ab0d3ecc71"
// @section extruder
@@ -1914,31 +1912,12 @@
//
//#define LCD_FOR_MELZI
-//
-// SSD1306 OLED full graphics generic display
-//
-//#define U8GLIB_SSD1306
-
-//
-// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
-//
-//#define SAV_3DGLCD
-#if ENABLED(SAV_3DGLCD)
- //#define U8GLIB_SSD1306
- #define U8GLIB_SH1106
-#endif
-
//
// Original Ulticontroller from Ultimaker 2 printer with SSD1309 I2C display and encoder
// https://github.com/Ultimaker/Ultimaker2/tree/master/1249_Ulticontroller_Board_(x1)
//
//#define ULTI_CONTROLLER
-//
-// TinyBoy2 128x64 OLED / Encoder Panel
-//
-//#define OLED_PANEL_TINYBOY2
-
//
// MKS MINI12864 with graphic controller and SD support
// https://reprap.org/wiki/MKS_MINI_12864
@@ -1972,15 +1951,6 @@
//
//#define ANET_FULL_GRAPHICS_LCD
-//
-// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
-// http://reprap.org/wiki/MKS_12864OLED
-//
-// Tiny, but very sharp OLED display
-//
-//#define MKS_12864OLED // Uses the SH1106 controller (default)
-//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
-
//
// AZSMZ 12864 LCD with SD
// https://www.aliexpress.com/store/product/3D-printer-smart-controller-SMART-RAMPS-OR-RAMPS-1-4-LCD-12864-LCD-control-panel-green/2179173_32213636460.html
@@ -1993,6 +1963,43 @@
//
//#define SILVER_GATE_GLCD_CONTROLLER
+//=============================================================================
+//============================== OLED Displays ==============================
+//=============================================================================
+
+//
+// SSD1306 OLED full graphics generic display
+//
+//#define U8GLIB_SSD1306
+
+//
+// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules
+//
+//#define SAV_3DGLCD
+#if ENABLED(SAV_3DGLCD)
+ #define U8GLIB_SSD1306
+ //#define U8GLIB_SH1106
+#endif
+
+//
+// TinyBoy2 128x64 OLED / Encoder Panel
+//
+//#define OLED_PANEL_TINYBOY2
+
+//
+// MKS OLED 1.3" 128 × 64 FULL GRAPHICS CONTROLLER
+// http://reprap.org/wiki/MKS_12864OLED
+//
+// Tiny, but very sharp OLED display
+//
+//#define MKS_12864OLED // Uses the SH1106 controller (default)
+//#define MKS_12864OLED_SSD1306 // Uses the SSD1306 controller
+
+//
+// Einstart S OLED SSD1306
+//
+//#define U8GLIB_SH1106_EINSTART
+
//=============================================================================
//========================== Extensible UI Displays ===========================
//=============================================================================
diff --git a/platformio.ini b/platformio.ini
index 1dbd74b94d..0ca1b1a87c 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -329,7 +329,7 @@ upload_protocol = stlink
debug_tool = stlink
#
-# STM32F4
+# STM32F4 with STM32GENERIC
#
[env:STM32F4]
platform = ststm32
@@ -338,7 +338,20 @@ board = disco_f407vg
build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB
lib_deps = ${common.lib_deps}
lib_ignore = Adafruit NeoPixel, c1921b4, TMCStepper
-src_filter = ${common.default_src_filter} +
+src_filter = ${common.default_src_filter} + - +
+monitor_speed = 250000
+
+#
+# STM32F7 with STM32GENERIC
+#
+[env:STM32F7]
+platform = ststm32
+framework = arduino
+board = disco_f765vg
+build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB
+lib_deps = ${common.lib_deps}
+lib_ignore = Adafruit NeoPixel, c1921b4, TMCStepper
+src_filter = ${common.default_src_filter} + - +
monitor_speed = 250000
#
@@ -467,7 +480,7 @@ board = BigTree_SKR_Pro
extra_scripts = pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
build_flags = ${common.build_flags}
-DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483 -DUSB_PRODUCT=\"STM32F407ZG\"
- -DTARGET_STM32F4 -DSTM32F407_5ZX -DVECT_TAB_OFFSET=0x8000
+ -DTARGET_STM32F4 -DSTM32F407_5ZX -DVECT_TAB_OFFSET=0x8000
lib_deps = ${common.lib_deps}
lib_ignore = Adafruit NeoPixel, c1921b4, TMC26XStepper, SailfishLCD, SailfishRGB_LED, SlowSoftI2CMaster
src_filter = ${common.default_src_filter} +