diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h
index 1b5e4188ec9aefb17c816b4b678d1c1af11bf712..d23c82299e39571329c374d1ee2c5f8b94d55883 100644
--- a/Marlin/Conditionals_post.h
+++ b/Marlin/Conditionals_post.h
@@ -462,10 +462,13 @@
   #define HAS_SOLENOID_1 (PIN_EXISTS(SOL1))
   #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2))
   #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3))
-  #define HAS_MICROSTEPS (PIN_EXISTS(X_MS1))
+  #define HAS_MICROSTEPS_X (PIN_EXISTS(X_MS1))
+  #define HAS_MICROSTEPS_Y (PIN_EXISTS(Y_MS1))
+  #define HAS_MICROSTEPS_Z (PIN_EXISTS(Z_MS1))
   #define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1))
   #define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1))
   #define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1))
+  #define HAS_MICROSTEPS (HAS_MICROSTEPS_X || HAS_MICROSTEPS_Y || HAS_MICROSTEPS_Z || HAS_MICROSTEPS_E0 || HAS_MICROSTEPS_E1 || HAS_MICROSTEPS_E2)
   #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
   #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE))
   #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE))
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 03e97a1479740a3fb770ee075bb4808e88683951..5d6351f1614fbb2595b928d4eebce3267c758207 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -781,7 +781,7 @@ void setup_killpin() {
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
 
   void setup_filrunoutpin() {
-    pinMode(FIL_RUNOUT_PIN, INPUT);
+    SET_INPUT(FIL_RUNOUT_PIN);
     #if ENABLED(ENDSTOPPULLUP_FIL_RUNOUT)
       WRITE(FIL_RUNOUT_PIN, HIGH);
     #endif
@@ -859,10 +859,9 @@ void servo_init() {
  */
 #if HAS_STEPPER_RESET
   void disableStepperDrivers() {
-    pinMode(STEPPER_RESET_PIN, OUTPUT);
-    digitalWrite(STEPPER_RESET_PIN, LOW);  // drive it down to hold in reset motor driver chips
+    OUT_WRITE(STEPPER_RESET_PIN, LOW);  // drive it down to hold in reset motor driver chips
   }
-  void enableStepperDrivers() { pinMode(STEPPER_RESET_PIN, INPUT); }  // set to input, which allows it to be pulled high by pullups
+  void enableStepperDrivers() { SET_INPUT(STEPPER_RESET_PIN); }  // set to input, which allows it to be pulled high by pullups
 #endif
 
 #if ENABLED(EXPERIMENTAL_I2CBUS) && I2C_SLAVE_ADDRESS > 0
@@ -6514,18 +6513,19 @@ inline void gcode_M503() {
 inline void gcode_M907() {
   #if HAS_DIGIPOTSS
     LOOP_XYZE(i)
-      if (code_seen(axis_codes[i])) stepper.digipot_current(i, code_value_int());
+    if (code_seen(axis_codes[i])) stepper.digipot_current(i, code_value_int());
     if (code_seen('B')) stepper.digipot_current(4, code_value_int());
     if (code_seen('S')) for (int i = 0; i <= 4; i++) stepper.digipot_current(i, code_value_int());
-  #endif
-  #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
-    if (code_seen('X')) stepper.digipot_current(0, code_value_int());
-  #endif
-  #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
-    if (code_seen('Z')) stepper.digipot_current(1, code_value_int());
-  #endif
-  #if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
-    if (code_seen('E')) stepper.digipot_current(2, code_value_int());
+  #elif HAS_MOTOR_CURRENT_PWM
+    #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
+      if (code_seen('X')) stepper.digipot_current(0, code_value_int());
+    #endif
+    #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
+      if (code_seen('Z')) stepper.digipot_current(1, code_value_int());
+    #endif
+    #if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
+      if (code_seen('E')) stepper.digipot_current(2, code_value_int());
+    #endif
   #endif
   #if ENABLED(DIGIPOT_I2C)
     // this one uses actual amps in floating point
@@ -8718,8 +8718,8 @@ void prepare_move_to_destination() {
       bool new_led = (max_temp > 55.0) ? true : (max_temp < 54.0) ? false : red_led;
       if (new_led != red_led) {
         red_led = new_led;
-        digitalWrite(STAT_LED_RED, new_led ? HIGH : LOW);
-        digitalWrite(STAT_LED_BLUE, new_led ? LOW : HIGH);
+        WRITE(STAT_LED_RED_PIN, new_led ? HIGH : LOW);
+        WRITE(STAT_LED_BLUE_PIN, new_led ? LOW : HIGH);
       }
     }
   }
@@ -9193,20 +9193,17 @@ void setup() {
   #endif
 
   #if ENABLED(Z_PROBE_SLED) && PIN_EXISTS(SLED)
-    pinMode(SLED_PIN, OUTPUT);
-    digitalWrite(SLED_PIN, LOW); // turn it off
+    OUT_WRITE(SLED_PIN, LOW); // turn it off
   #endif // Z_PROBE_SLED
 
   setup_homepin();
 
-  #ifdef STAT_LED_RED
-    pinMode(STAT_LED_RED, OUTPUT);
-    digitalWrite(STAT_LED_RED, LOW); // turn it off
+  #if PIN_EXISTS(STAT_LED_RED)
+    OUT_WRITE(STAT_LED_RED_PIN, LOW); // turn it off
   #endif
 
-  #ifdef STAT_LED_BLUE
-    pinMode(STAT_LED_BLUE, OUTPUT);
-    digitalWrite(STAT_LED_BLUE, LOW); // turn it off
+  #if PIN_EXISTS(STAT_LED_BLUE)
+    OUT_WRITE(STAT_LED_BLUE_PIN, LOW); // turn it off
   #endif
 
   lcd_init();
diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h
index 7c2526bfd2bfe0d2d246feeb2c08b6fc6a145735..b97a72d29fc94b0844cd7b1bb4895c980e798b94 100644
--- a/Marlin/SanityCheck.h
+++ b/Marlin/SanityCheck.h
@@ -61,10 +61,6 @@
   #error "Z_LATE_ENABLE can't be used with COREXZ."
 #elif defined(X_HOME_RETRACT_MM)
   #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM."
-#elif defined(BEEPER)
-  #error "BEEPER is now BEEPER_PIN. Please update your pins definitions."
-#elif defined(SDCARDDETECT)
-  #error "SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions."
 #elif defined(SDCARDDETECTINVERTED)
   #error "SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration."
 #elif defined(BTENABLED)
@@ -143,6 +139,16 @@
   #error "SCARA is now MORGAN_SCARA. Please update your configuration."
 #elif defined(AUTO_BED_LEVELING_GRID_POINTS)
   #error "AUTO_BED_LEVELING_GRID_POINTS is now ABL_GRID_POINTS_X and ABL_GRID_POINTS_Y. Please update your configuration."
+#elif defined(BEEPER)
+  #error "BEEPER is now BEEPER_PIN. Please update your pins definitions."
+#elif defined(SDCARDDETECT)
+  #error "SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions."
+#elif defined(STAT_LED_RED) || defined(STAT_LED_BLUE)
+  #error "STAT_LED_RED/STAT_LED_BLUE are now STAT_LED_RED_PIN/STAT_LED_BLUE_PIN. Please update your pins definitions."
+#elif defined(LCD_PIN_BL)
+  #error "LCD_PIN_BL is now LCD_BACKLIGHT_PIN. Please update your pins definitions."
+#elif defined(LCD_PIN_RESET)
+  #error "LCD_PIN_RESET is now LCD_RESET_PIN. Please update your pins definitions."
 #endif
 
 /**
@@ -722,6 +728,13 @@
   #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT."
 #endif
 
+/**
+ * Temperature status LEDs
+ */
+#if ENABLED(TEMP_STAT_LEDS) && !(PIN_EXISTS(STAT_LED_RED) && PIN_EXISTS(STAT_LED_BLUE))
+  #error "TEMP_STAT_LEDS requires STAT_LED_RED_PIN and STAT_LED_BLUE_PIN."
+#endif
+
 /**
  * Basic 2-nozzle duplication mode
  */
diff --git a/Marlin/Sd2Card.cpp b/Marlin/Sd2Card.cpp
index 190e4ad1ff53b88ea2bb336bb0c18cbd0136756d..900c73b53d9d7c445c5f351d57c497c050fff0c6 100644
--- a/Marlin/Sd2Card.cpp
+++ b/Marlin/Sd2Card.cpp
@@ -302,16 +302,16 @@ bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
   // set pin modes
   pinMode(chipSelectPin_, OUTPUT);
   chipSelectHigh();
-  pinMode(SPI_MISO_PIN, INPUT);
-  pinMode(SPI_MOSI_PIN, OUTPUT);
-  pinMode(SPI_SCK_PIN, OUTPUT);
+  SET_INPUT(SPI_MISO_PIN);
+  SET_OUTPUT(SPI_MOSI_PIN);
+  SET_OUTPUT(SPI_SCK_PIN);
 
   #if DISABLED(SOFTWARE_SPI)
     // SS must be in output mode even it is not chip select
-    pinMode(SS_PIN, OUTPUT);
+    SET_OUTPUT(SS_PIN);
     // set SS high - may be chip select for another SPI device
     #if SET_SPI_SS_HIGH
-      digitalWrite(SS_PIN, HIGH);
+      WRITE(SS_PIN, HIGH);
     #endif  // SET_SPI_SS_HIGH
     // set SCK rate for initialization commands
     spiRate_ = SPI_SD_INIT_RATE;
diff --git a/Marlin/fastio.h b/Marlin/fastio.h
index 3a608e005851ea4c38f76e5c8ae1577dd44ebb19..cc90a0f489c545e04bac06e460e63c4a2efdc418 100644
--- a/Marlin/fastio.h
+++ b/Marlin/fastio.h
@@ -2064,343 +2064,342 @@
     #define MOSI        DIO10  // 22
     #define SS          DIO8   // 20
 
-    #define DIO0_PIN        PINA0
-    #define DIO0_RPORT      PINA
-    #define DIO0_WPORT      PORTA
-    #define DIO0_PWM      NULL
-    #define DIO0_DDR        DDRA
-
-    #define DIO1_PIN        PINA1
-    #define DIO1_RPORT      PINA
-    #define DIO1_WPORT      PORTA
-    #define DIO1_PWM      NULL
-    #define DIO1_DDR        DDRA
-
-    #define DIO2_PIN        PINA2
-    #define DIO2_RPORT      PINA
-    #define DIO2_WPORT      PORTA
-    #define DIO2_PWM      NULL
-    #define DIO2_DDR        DDRA
-
-    #define DIO3_PIN        PINA3
-    #define DIO3_RPORT      PINA
-    #define DIO3_WPORT      PORTA
-    #define DIO3_PWM      NULL
-    #define DIO3_DDR        DDRA
-
-    #define DIO4_PIN        PINA4
-    #define DIO4_RPORT      PINA
-    #define DIO4_WPORT      PORTA
-    #define DIO4_PWM      NULL
-    #define DIO4_DDR        DDRA
-
-    #define DIO5_PIN        PINA5
-    #define DIO5_RPORT      PINA
-    #define DIO5_WPORT      PORTA
-    #define DIO5_PWM      NULL
-    #define DIO5_DDR        DDRA
-
-    #define DIO6_PIN        PINA6
-    #define DIO6_RPORT      PINA
-    #define DIO6_WPORT      PORTA
-    #define DIO6_PWM      NULL
-    #define DIO6_DDR        DDRA
-
-    #define DIO7_PIN        PINA7
-    #define DIO7_RPORT      PINA
-    #define DIO7_WPORT      PORTA
-    #define DIO7_PWM      NULL
-    #define DIO7_DDR        DDRA
-
-    #define DIO8_PIN        PINB0
-    #define DIO8_RPORT      PINB
-    #define DIO8_WPORT      PORTB
-    #define DIO8_PWM      NULL
-    #define DIO8_DDR        DDRB
-
-    #define DIO9_PIN        PINB1
-    #define DIO9_RPORT      PINB
-    #define DIO9_WPORT      PORTB
-    #define DIO9_PWM      NULL
-    #define DIO9_DDR        DDRB
-
-    #define DIO10_PIN       PINB2
-    #define DIO10_RPORT     PINB
-    #define DIO10_WPORT     PORTB
-    #define DIO10_PWM     NULL
-    #define DIO10_DDR       DDRB
-
-    #define DIO11_PIN       PINB3
-    #define DIO11_RPORT     PINB
-    #define DIO11_WPORT     PORTB
-    #define DIO11_PWM     NULL
-    #define DIO11_DDR       DDRB
-
-    #define DIO12_PIN       PINB4
-    #define DIO12_RPORT     PINB
-    #define DIO12_WPORT     PORTB
-    #define DIO12_PWM     NULL
-    #define DIO12_DDR       DDRB
-
-    #define DIO13_PIN       PINB5
-    #define DIO13_RPORT     PINB
-    #define DIO13_WPORT     PORTB
-    #define DIO13_PWM     NULL
-    #define DIO13_DDR       DDRB
-
-    #define DIO14_PIN       PINB6
-    #define DIO14_RPORT     PINB
-    #define DIO14_WPORT     PORTB
-    #define DIO14_PWM     NULL
-    #define DIO14_DDR       DDRB
-
-    #define DIO15_PIN       PINB7
-    #define DIO15_RPORT     PINB
-    #define DIO15_WPORT     PORTB
-    #define DIO15_PWM     NULL
-    #define DIO15_DDR       DDRB
-
-    #define DIO16_PIN       PINC0
-    #define DIO16_RPORT     PINC
-    #define DIO16_WPORT     PORTC
-    #define DIO16_PWM     NULL
-    #define DIO16_DDR       DDRC
-
-    #define DIO17_PIN       PINC1
-    #define DIO17_RPORT     PINC
-    #define DIO17_WPORT     PORTC
-    #define DIO17_PWM     NULL
-    #define DIO17_DDR       DDRC
-
-    #define DIO18_PIN       PINC2
-    #define DIO18_RPORT     PINC
-    #define DIO18_WPORT     PORTC
-    #define DIO18_PWM     NULL
-    #define DIO18_DDR       DDRC
-
-    #define DIO19_PIN       PINC3
-    #define DIO19_RPORT     PINC
-    #define DIO19_WPORT     PORTC
-    #define DIO19_PWM     NULL
-    #define DIO19_DDR       DDRC
-
-    #define DIO20_PIN       PINC4
-    #define DIO20_RPORT     PINC
-    #define DIO20_WPORT     PORTC
-    #define DIO20_PWM     NULL
-    #define DIO20_DDR       DDRC
-
-    #define DIO21_PIN       PINC5
-    #define DIO21_RPORT     PINC
-    #define DIO21_WPORT     PORTC
-    #define DIO21_PWM     NULL
-    #define DIO21_DDR       DDRC
-
-    #define DIO22_PIN       PINC6
-    #define DIO22_RPORT     PINC
-    #define DIO22_WPORT     PORTC
-    #define DIO22_PWM     NULL
-    #define DIO22_DDR       DDRC
-
-    #define DIO23_PIN       PINC7
-    #define DIO23_RPORT     PINC
-    #define DIO23_WPORT     PORTC
-    #define DIO23_PWM     NULL
-    #define DIO23_DDR       DDRC
-
-    #define DIO24_PIN       PIND0
-    #define DIO24_RPORT     PIND
-    #define DIO24_WPORT     PORTD
-    #define DIO24_PWM     NULL
-    #define DIO24_DDR       DDRD
-
-    #define DIO25_PIN       PIND1
-    #define DIO25_RPORT     PIND
-    #define DIO25_WPORT     PORTD
-    #define DIO25_PWM     NULL
-    #define DIO25_DDR       DDRD
-
-    #define DIO26_PIN       PIND2
-    #define DIO26_RPORT     PIND
-    #define DIO26_WPORT     PORTD
-    #define DIO26_PWM     NULL
-    #define DIO26_DDR       DDRD
-
-    #define DIO27_PIN       PIND3
-    #define DIO27_RPORT     PIND
-    #define DIO27_WPORT     PORTD
-    #define DIO27_PWM     NULL
-    #define DIO27_DDR       DDRD
-
-    #define DIO28_PIN       PIND4
-    #define DIO28_RPORT     PIND
-    #define DIO28_WPORT     PORTD
-    #define DIO28_PWM     NULL
-    #define DIO28_DDR       DDRD
-
-    #define DIO29_PIN       PIND5
-    #define DIO29_RPORT     PIND
-    #define DIO29_WPORT     PORTD
-    #define DIO29_PWM     NULL
-    #define DIO29_DDR       DDRD
-
-    #define DIO30_PIN       PIND6
-    #define DIO30_RPORT     PIND
-    #define DIO30_WPORT     PORTD
-    #define DIO30_PWM     NULL
-    #define DIO30_DDR       DDRD
-
-    #define DIO31_PIN       PIND7
-    #define DIO31_RPORT     PIND
-    #define DIO31_WPORT     PORTD
-    #define DIO31_PWM     NULL
-    #define DIO31_DDR       DDRD
-
-
-    #define DIO32_PIN       PINE0
-    #define DIO32_RPORT     PINE
-    #define DIO32_WPORT     PORTE
-    #define DIO32_PWM     NULL
-    #define DIO32_DDR       DDRE
-
-    #define DIO33_PIN       PINE1
-    #define DIO33_RPORT     PINE
-    #define DIO33_WPORT     PORTE
-    #define DIO33_PWM     NULL
-    #define DIO33_DDR       DDRE
-
-    #define DIO34_PIN       PINE2
-    #define DIO34_RPORT     PINE
-    #define DIO34_WPORT     PORTE
-    #define DIO34_PWM     NULL
-    #define DIO34_DDR       DDRE
-
-    #define DIO35_PIN       PINE3
-    #define DIO35_RPORT     PINE
-    #define DIO35_WPORT     PORTE
-    #define DIO35_PWM     NULL
-    #define DIO35_DDR       DDRE
-
-    #define DIO36_PIN       PINE4
-    #define DIO36_RPORT     PINE
-    #define DIO36_WPORT     PORTE
-    #define DIO36_PWM     NULL
-    #define DIO36_DDR       DDRE
-
-    #define DIO37_PIN       PINE5
-    #define DIO37_RPORT     PINE
-    #define DIO37_WPORT     PORTE
-    #define DIO37_PWM     NULL
-    #define DIO37_DDR       DDRE
-
-    #define DIO38_PIN       PINE6
-    #define DIO38_RPORT     PINE
-    #define DIO38_WPORT     PORTE
-    #define DIO38_PWM     NULL
-    #define DIO38_DDR       DDRE
-
-    #define DIO39_PIN       PINE7
-    #define DIO39_RPORT     PINE
-    #define DIO39_WPORT     PORTE
-    #define DIO39_PWM     NULL
-    #define DIO39_DDR       DDRE
-
-    #define AIO0_PIN PINF0
-    #define AIO0_RPORT PINF
-    #define AIO0_WPORT PORTF
-    #define AIO0_PWM      NULL
-    #define AIO0_DDR DDRF
-
-    #define AIO1_PIN PINF1
-    #define AIO1_RPORT PINF
-    #define AIO1_WPORT PORTF
-    #define AIO1_PWM      NULL
-    #define AIO1_DDR DDRF
-
-    #define AIO2_PIN PINF2
-    #define AIO2_RPORT PINF
-    #define AIO2_WPORT PORTF
-    #define AIO2_PWM      NULL
-    #define AIO2_DDR DDRF
-
-    #define AIO3_PIN PINF3
-    #define AIO3_RPORT PINF
-    #define AIO3_WPORT PORTF
-    #define AIO3_PWM      NULL
-    #define AIO3_DDR DDRF
-
-    #define AIO4_PIN PINF4
-    #define AIO4_RPORT PINF
-    #define AIO4_WPORT PORTF
-    #define AIO4_PWM      NULL
-    #define AIO4_DDR DDRF
-
-    #define AIO5_PIN PINF5
-    #define AIO5_RPORT PINF
-    #define AIO5_WPORT PORTF
-    #define AIO5_PWM      NULL
-    #define AIO5_DDR DDRF
-
-    #define AIO6_PIN PINF6
-    #define AIO6_RPORT PINF
-    #define AIO6_WPORT PORTF
-    #define AIO6_PWM      NULL
-    #define AIO6_DDR DDRF
-
-    #define AIO7_PIN PINF7
-    #define AIO7_RPORT PINF
-    #define AIO7_WPORT PORTF
-    #define AIO7_PWM      NULL
-    #define AIO7_DDR DDRF
-
-    #define DIO40_PIN       PINF0
-    #define DIO40_RPORT     PINF
-    #define DIO40_WPORT     PORTF
-    #define DIO40_PWM     NULL
-    #define DIO40_DDR       DDRF
-
-    #define DIO41_PIN       PINF1
-    #define DIO41_RPORT     PINF
-    #define DIO41_WPORT     PORTF
-    #define DIO41_PWM     NULL
-    #define DIO41_DDR       DDRF
-
-    #define DIO42_PIN       PINF2
-    #define DIO42_RPORT     PINF
-    #define DIO42_WPORT     PORTF
-    #define DIO42_PWM     NULL
-    #define DIO42_DDR       DDRF
-
-    #define DIO43_PIN       PINF3
-    #define DIO43_RPORT     PINF
-    #define DIO43_WPORT     PORTF
-    #define DIO43_PWM     NULL
-    #define DIO43_DDR       DDRF
-
-    #define DIO44_PIN       PINF4
-    #define DIO44_RPORT     PINF
-    #define DIO44_WPORT     PORTF
-    #define DIO44_PWM     NULL
-    #define DIO44_DDR       DDRF
-
-    #define DIO45_PIN       PINF5
-    #define DIO45_RPORT     PINF
-    #define DIO45_WPORT     PORTF
-    #define DIO45_PWM     NULL
-    #define DIO45_DDR       DDRF
-
-    #define DIO46_PIN       PINF6
-    #define DIO46_RPORT     PINF
-    #define DIO46_WPORT     PORTF
-    #define DIO46_PWM     NULL
-    #define DIO46_DDR       DDRF
-
-    #define DIO47_PIN       PINF7
-    #define DIO47_RPORT     PINF
-    #define DIO47_WPORT     PORTF
-    #define DIO47_PWM     NULL
-    #define DIO47_DDR       DDRF
+    #define DIO0_PIN    PINA0
+    #define DIO0_RPORT  PINA
+    #define DIO0_WPORT  PORTA
+    #define DIO0_PWM    NULL
+    #define DIO0_DDR    DDRA
+
+    #define DIO1_PIN    PINA1
+    #define DIO1_RPORT  PINA
+    #define DIO1_WPORT  PORTA
+    #define DIO1_PWM    NULL
+    #define DIO1_DDR    DDRA
+
+    #define DIO2_PIN    PINA2
+    #define DIO2_RPORT  PINA
+    #define DIO2_WPORT  PORTA
+    #define DIO2_PWM    NULL
+    #define DIO2_DDR    DDRA
+
+    #define DIO3_PIN    PINA3
+    #define DIO3_RPORT  PINA
+    #define DIO3_WPORT  PORTA
+    #define DIO3_PWM    NULL
+    #define DIO3_DDR    DDRA
+
+    #define DIO4_PIN    PINA4
+    #define DIO4_RPORT  PINA
+    #define DIO4_WPORT  PORTA
+    #define DIO4_PWM    NULL
+    #define DIO4_DDR    DDRA
+
+    #define DIO5_PIN    PINA5
+    #define DIO5_RPORT  PINA
+    #define DIO5_WPORT  PORTA
+    #define DIO5_PWM    NULL
+    #define DIO5_DDR    DDRA
+
+    #define DIO6_PIN    PINA6
+    #define DIO6_RPORT  PINA
+    #define DIO6_WPORT  PORTA
+    #define DIO6_PWM    NULL
+    #define DIO6_DDR    DDRA
+
+    #define DIO7_PIN    PINA7
+    #define DIO7_RPORT  PINA
+    #define DIO7_WPORT  PORTA
+    #define DIO7_PWM    NULL
+    #define DIO7_DDR    DDRA
+
+    #define DIO8_PIN    PINB0
+    #define DIO8_RPORT  PINB
+    #define DIO8_WPORT  PORTB
+    #define DIO8_PWM    NULL
+    #define DIO8_DDR    DDRB
+
+    #define DIO9_PIN    PINB1
+    #define DIO9_RPORT  PINB
+    #define DIO9_WPORT  PORTB
+    #define DIO9_PWM    NULL
+    #define DIO9_DDR    DDRB
+
+    #define DIO10_PIN   PINB2
+    #define DIO10_RPORT PINB
+    #define DIO10_WPORT PORTB
+    #define DIO10_PWM   NULL
+    #define DIO10_DDR   DDRB
+
+    #define DIO11_PIN   PINB3
+    #define DIO11_RPORT PINB
+    #define DIO11_WPORT PORTB
+    #define DIO11_PWM   NULL
+    #define DIO11_DDR   DDRB
+
+    #define DIO12_PIN   PINB4
+    #define DIO12_RPORT PINB
+    #define DIO12_WPORT PORTB
+    #define DIO12_PWM   NULL
+    #define DIO12_DDR   DDRB
+
+    #define DIO13_PIN   PINB5
+    #define DIO13_RPORT PINB
+    #define DIO13_WPORT PORTB
+    #define DIO13_PWM   NULL
+    #define DIO13_DDR   DDRB
+
+    #define DIO14_PIN   PINB6
+    #define DIO14_RPORT PINB
+    #define DIO14_WPORT PORTB
+    #define DIO14_PWM   NULL
+    #define DIO14_DDR   DDRB
+
+    #define DIO15_PIN   PINB7
+    #define DIO15_RPORT PINB
+    #define DIO15_WPORT PORTB
+    #define DIO15_PWM   NULL
+    #define DIO15_DDR   DDRB
+
+    #define DIO16_PIN   PINC0
+    #define DIO16_RPORT PINC
+    #define DIO16_WPORT PORTC
+    #define DIO16_PWM   NULL
+    #define DIO16_DDR   DDRC
+
+    #define DIO17_PIN   PINC1
+    #define DIO17_RPORT PINC
+    #define DIO17_WPORT PORTC
+    #define DIO17_PWM   NULL
+    #define DIO17_DDR   DDRC
+
+    #define DIO18_PIN   PINC2
+    #define DIO18_RPORT PINC
+    #define DIO18_WPORT PORTC
+    #define DIO18_PWM   NULL
+    #define DIO18_DDR   DDRC
+
+    #define DIO19_PIN   PINC3
+    #define DIO19_RPORT PINC
+    #define DIO19_WPORT PORTC
+    #define DIO19_PWM   NULL
+    #define DIO19_DDR   DDRC
+
+    #define DIO20_PIN   PINC4
+    #define DIO20_RPORT PINC
+    #define DIO20_WPORT PORTC
+    #define DIO20_PWM   NULL
+    #define DIO20_DDR   DDRC
+
+    #define DIO21_PIN   PINC5
+    #define DIO21_RPORT PINC
+    #define DIO21_WPORT PORTC
+    #define DIO21_PWM   NULL
+    #define DIO21_DDR   DDRC
+
+    #define DIO22_PIN   PINC6
+    #define DIO22_RPORT PINC
+    #define DIO22_WPORT PORTC
+    #define DIO22_PWM   NULL
+    #define DIO22_DDR   DDRC
+
+    #define DIO23_PIN   PINC7
+    #define DIO23_RPORT PINC
+    #define DIO23_WPORT PORTC
+    #define DIO23_PWM   NULL
+    #define DIO23_DDR   DDRC
+
+    #define DIO24_PIN   PIND0
+    #define DIO24_RPORT PIND
+    #define DIO24_WPORT PORTD
+    #define DIO24_PWM   NULL
+    #define DIO24_DDR   DDRD
+
+    #define DIO25_PIN   PIND1
+    #define DIO25_RPORT PIND
+    #define DIO25_WPORT PORTD
+    #define DIO25_PWM   NULL
+    #define DIO25_DDR   DDRD
+
+    #define DIO26_PIN   PIND2
+    #define DIO26_RPORT PIND
+    #define DIO26_WPORT PORTD
+    #define DIO26_PWM   NULL
+    #define DIO26_DDR   DDRD
+
+    #define DIO27_PIN   PIND3
+    #define DIO27_RPORT PIND
+    #define DIO27_WPORT PORTD
+    #define DIO27_PWM   NULL
+    #define DIO27_DDR   DDRD
+
+    #define DIO28_PIN   PIND4
+    #define DIO28_RPORT PIND
+    #define DIO28_WPORT PORTD
+    #define DIO28_PWM   NULL
+    #define DIO28_DDR   DDRD
+
+    #define DIO29_PIN   PIND5
+    #define DIO29_RPORT PIND
+    #define DIO29_WPORT PORTD
+    #define DIO29_PWM   NULL
+    #define DIO29_DDR   DDRD
+
+    #define DIO30_PIN   PIND6
+    #define DIO30_RPORT PIND
+    #define DIO30_WPORT PORTD
+    #define DIO30_PWM   NULL
+    #define DIO30_DDR   DDRD
+
+    #define DIO31_PIN   PIND7
+    #define DIO31_RPORT PIND
+    #define DIO31_WPORT PORTD
+    #define DIO31_PWM   NULL
+    #define DIO31_DDR   DDRD
+
+
+    #define DIO32_PIN   PINE0
+    #define DIO32_RPORT PINE
+    #define DIO32_WPORT PORTE
+    #define DIO32_PWM   NULL
+    #define DIO32_DDR   DDRE
+
+    #define DIO33_PIN   PINE1
+    #define DIO33_RPORT PINE
+    #define DIO33_WPORT PORTE
+    #define DIO33_PWM   NULL
+    #define DIO33_DDR   DDRE
+
+    #define DIO34_PIN   PINE2
+    #define DIO34_RPORT PINE
+    #define DIO34_WPORT PORTE
+    #define DIO34_PWM   NULL
+    #define DIO34_DDR   DDRE
+
+    #define DIO35_PIN   PINE3
+    #define DIO35_RPORT PINE
+    #define DIO35_WPORT PORTE
+    #define DIO35_PWM   NULL
+    #define DIO35_DDR   DDRE
+
+    #define DIO36_PIN   PINE4
+    #define DIO36_RPORT PINE
+    #define DIO36_WPORT PORTE
+    #define DIO36_PWM   NULL
+    #define DIO36_DDR   DDRE
+
+    #define DIO37_PIN   PINE5
+    #define DIO37_RPORT PINE
+    #define DIO37_WPORT PORTE
+    #define DIO37_PWM   NULL
+    #define DIO37_DDR   DDRE
+
+    #define DIO38_PIN   PINE6
+    #define DIO38_RPORT PINE
+    #define DIO38_WPORT PORTE
+    #define DIO38_PWM   NULL
+    #define DIO38_DDR   DDRE
+
+    #define DIO39_PIN   PINE7
+    #define DIO39_RPORT PINE
+    #define DIO39_WPORT PORTE
+    #define DIO39_PWM   NULL
+    #define DIO39_DDR   DDRE
+
+    #define AIO0_PIN    PINF0
+    #define AIO0_RPORT  PINF
+    #define AIO0_WPORT  PORTF
+    #define AIO0_PWM    NULL
+    #define AIO0_DDR    DDRF
+
+    #define AIO1_PIN    PINF1
+    #define AIO1_RPORT  PINF
+    #define AIO1_WPORT  PORTF
+    #define AIO1_PWM    NULL
+    #define AIO1_DDR    DDRF
+
+    #define AIO2_PIN    PINF2
+    #define AIO2_RPORT  PINF
+    #define AIO2_WPORT  PORTF
+    #define AIO2_PWM    NULL
+    #define AIO2_DDR    DDRF
+
+    #define AIO3_PIN    PINF3
+    #define AIO3_RPORT  PINF
+    #define AIO3_WPORT  PORTF
+    #define AIO3_PWM    NULL
+    #define AIO3_DDR    DDRF
+
+    #define AIO4_PIN    PINF4
+    #define AIO4_RPORT  PINF
+    #define AIO4_WPORT  PORTF
+    #define AIO4_PWM    NULL
+    #define AIO4_DDR    DDRF
+
+    #define AIO5_PIN    PINF5
+    #define AIO5_RPORT  PINF
+    #define AIO5_WPORT  PORTF
+    #define AIO5_PWM    NULL
+    #define AIO5_DDR    DDRF
+
+    #define AIO6_PIN    PINF6
+    #define AIO6_RPORT  PINF
+    #define AIO6_WPORT  PORTF
+    #define AIO6_PWM    NULL
+    #define AIO6_DDR    DDRF
+
+    #define AIO7_PIN    PINF7
+    #define AIO7_RPORT  PINF
+    #define AIO7_WPORT  PORTF
+    #define AIO7_PWM    NULL
+    #define AIO7_DDR    DDRF
+
+    #define DIO40_PIN   PINF0
+    #define DIO40_RPORT PINF
+    #define DIO40_WPORT PORTF
+    #define DIO40_PWM   NULL
+    #define DIO40_DDR   DDRF
+
+    #define DIO41_PIN   PINF1
+    #define DIO41_RPORT PINF
+    #define DIO41_WPORT PORTF
+    #define DIO41_PWM   NULL
+    #define DIO41_DDR   DDRF
+
+    #define DIO42_PIN   PINF2
+    #define DIO42_RPORT PINF
+    #define DIO42_WPORT PORTF
+    #define DIO42_PWM   NULL
+    #define DIO42_DDR   DDRF
 
+    #define DIO43_PIN   PINF3
+    #define DIO43_RPORT PINF
+    #define DIO43_WPORT PORTF
+    #define DIO43_PWM   NULL
+    #define DIO43_DDR   DDRF
+
+    #define DIO44_PIN   PINF4
+    #define DIO44_RPORT PINF
+    #define DIO44_WPORT PORTF
+    #define DIO44_PWM   NULL
+    #define DIO44_DDR   DDRF
+
+    #define DIO45_PIN   PINF5
+    #define DIO45_RPORT PINF
+    #define DIO45_WPORT PORTF
+    #define DIO45_PWM   NULL
+    #define DIO45_DDR   DDRF
+
+    #define DIO46_PIN   PINF6
+    #define DIO46_RPORT PINF
+    #define DIO46_WPORT PORTF
+    #define DIO46_PWM   NULL
+    #define DIO46_DDR   DDRF
+
+    #define DIO47_PIN   PINF7
+    #define DIO47_RPORT PINF
+    #define DIO47_WPORT PORTF
+    #define DIO47_PWM   NULL
+    #define DIO47_DDR   DDRF
 
 
     #undef PA0
@@ -2709,643 +2708,643 @@
     */
 
     // SPI
-    #define SCK             DIO21 // 9
-    #define MISO            DIO23 // 11
-    #define MOSI            DIO22 // 10
-    #define SS              DIO20 // 8
-
-    #define DIO0_PIN PIND0
-    #define DIO0_RPORT PIND
-    #define DIO0_WPORT PORTD
-    #define DIO0_PWM NULL
-    #define DIO0_DDR DDRD
-
-    #define DIO1_PIN PIND1
-    #define DIO1_RPORT PIND
-    #define DIO1_WPORT PORTD
-    #define DIO1_PWM NULL
-    #define DIO1_DDR DDRD
-
-    #define DIO2_PIN PIND2
-    #define DIO2_RPORT PIND
-    #define DIO2_WPORT PORTD
-    #define DIO2_PWM NULL
-    #define DIO2_DDR DDRD
-
-    #define DIO3_PIN PIND3
-    #define DIO3_RPORT PIND
-    #define DIO3_WPORT PORTD
-    #define DIO3_PWM NULL
-    #define DIO3_DDR DDRD
-
-    #define DIO4_PIN PIND4
-    #define DIO4_RPORT PIND
-    #define DIO4_WPORT PORTD
-    #define DIO4_PWM NULL
-    #define DIO4_DDR DDRD
-
-    #define DIO5_PIN PIND5
-    #define DIO5_RPORT PIND
-    #define DIO5_WPORT PORTD
-    #define DIO5_PWM NULL
-    #define DIO5_DDR DDRD
-
-    #define DIO6_PIN PIND6
-    #define DIO6_RPORT PIND
-    #define DIO6_WPORT PORTD
-    #define DIO6_PWM NULL
-    #define DIO6_DDR DDRD
-
-    #define DIO7_PIN PIND7
-    #define DIO7_RPORT PIND
-    #define DIO7_WPORT PORTD
-    #define DIO7_PWM NULL
-    #define DIO7_DDR DDRD
-
-    #define DIO8_PIN PINE0
-    #define DIO8_RPORT PINE
-    #define DIO8_WPORT PORTE
-    #define DIO8_PWM NULL
-    #define DIO8_DDR DDRE
-
-    #define DIO9_PIN PINE1
-    #define DIO9_RPORT PINE
-    #define DIO9_WPORT PORTE
-    #define DIO9_PWM NULL
-    #define DIO9_DDR DDRE
-
-    #define DIO10_PIN PINC0
+    #define SCK         DIO21 //  9
+    #define MISO        DIO23 // 11
+    #define MOSI        DIO22 // 10
+    #define SS          DIO20 //  8
+
+    #define DIO0_PIN    PIND0
+    #define DIO0_RPORT  PIND
+    #define DIO0_WPORT  PORTD
+    #define DIO0_PWM    NULL
+    #define DIO0_DDR    DDRD
+
+    #define DIO1_PIN    PIND1
+    #define DIO1_RPORT  PIND
+    #define DIO1_WPORT  PORTD
+    #define DIO1_PWM    NULL
+    #define DIO1_DDR    DDRD
+
+    #define DIO2_PIN    PIND2
+    #define DIO2_RPORT  PIND
+    #define DIO2_WPORT  PORTD
+    #define DIO2_PWM    NULL
+    #define DIO2_DDR    DDRD
+
+    #define DIO3_PIN    PIND3
+    #define DIO3_RPORT  PIND
+    #define DIO3_WPORT  PORTD
+    #define DIO3_PWM    NULL
+    #define DIO3_DDR    DDRD
+
+    #define DIO4_PIN    PIND4
+    #define DIO4_RPORT  PIND
+    #define DIO4_WPORT  PORTD
+    #define DIO4_PWM    NULL
+    #define DIO4_DDR    DDRD
+
+    #define DIO5_PIN    PIND5
+    #define DIO5_RPORT  PIND
+    #define DIO5_WPORT  PORTD
+    #define DIO5_PWM    NULL
+    #define DIO5_DDR    DDRD
+
+    #define DIO6_PIN    PIND6
+    #define DIO6_RPORT  PIND
+    #define DIO6_WPORT  PORTD
+    #define DIO6_PWM    NULL
+    #define DIO6_DDR    DDRD
+
+    #define DIO7_PIN    PIND7
+    #define DIO7_RPORT  PIND
+    #define DIO7_WPORT  PORTD
+    #define DIO7_PWM    NULL
+    #define DIO7_DDR    DDRD
+
+    #define DIO8_PIN    PINE0
+    #define DIO8_RPORT  PINE
+    #define DIO8_WPORT  PORTE
+    #define DIO8_PWM    NULL
+    #define DIO8_DDR    DDRE
+
+    #define DIO9_PIN    PINE1
+    #define DIO9_RPORT  PINE
+    #define DIO9_WPORT  PORTE
+    #define DIO9_PWM    NULL
+    #define DIO9_DDR    DDRE
+
+    #define DIO10_PIN   PINC0
     #define DIO10_RPORT PINC
     #define DIO10_WPORT PORTC
-    #define DIO10_PWM NULL
-    #define DIO10_DDR DDRC
+    #define DIO10_PWM   NULL
+    #define DIO10_DDR   DDRC
 
-    #define DIO11_PIN PINC1
+    #define DIO11_PIN   PINC1
     #define DIO11_RPORT PINC
     #define DIO11_WPORT PORTC
-    #define DIO11_PWM NULL
-    #define DIO11_DDR DDRC
+    #define DIO11_PWM   NULL
+    #define DIO11_DDR   DDRC
 
-    #define DIO12_PIN PINC2
+    #define DIO12_PIN   PINC2
     #define DIO12_RPORT PINC
     #define DIO12_WPORT PORTC
-    #define DIO12_PWM NULL
-    #define DIO12_DDR DDRC
+    #define DIO12_PWM   NULL
+    #define DIO12_DDR   DDRC
 
-    #define DIO13_PIN PINC3
+    #define DIO13_PIN   PINC3
     #define DIO13_RPORT PINC
     #define DIO13_WPORT PORTC
-    #define DIO13_PWM NULL
-    #define DIO13_DDR DDRC
+    #define DIO13_PWM   NULL
+    #define DIO13_DDR   DDRC
 
-    #define DIO14_PIN PINC4
+    #define DIO14_PIN   PINC4
     #define DIO14_RPORT PINC
     #define DIO14_WPORT PORTC
-    #define DIO14_PWM NULL
-    #define DIO14_DDR DDRC
+    #define DIO14_PWM   NULL
+    #define DIO14_DDR   DDRC
 
-    #define DIO15_PIN PINC5
+    #define DIO15_PIN   PINC5
     #define DIO15_RPORT PINC
     #define DIO15_WPORT PORTC
-    #define DIO15_PWM NULL
-    #define DIO15_DDR DDRC
+    #define DIO15_PWM   NULL
+    #define DIO15_DDR   DDRC
 
-    #define DIO16_PIN PINC6
+    #define DIO16_PIN   PINC6
     #define DIO16_RPORT PINC
     #define DIO16_WPORT PORTC
-    #define DIO16_PWM NULL
-    #define DIO16_DDR DDRC
+    #define DIO16_PWM   NULL
+    #define DIO16_DDR   DDRC
 
-    #define DIO17_PIN PINC7
+    #define DIO17_PIN   PINC7
     #define DIO17_RPORT PINC
     #define DIO17_WPORT PORTC
-    #define DIO17_PWM NULL
-    #define DIO17_DDR DDRC
+    #define DIO17_PWM   NULL
+    #define DIO17_DDR   DDRC
 
-    #define DIO18_PIN PINE6
+    #define DIO18_PIN   PINE6
     #define DIO18_RPORT PINE
     #define DIO18_WPORT PORTE
-    #define DIO18_PWM NULL
-    #define DIO18_DDR DDRE
+    #define DIO18_PWM   NULL
+    #define DIO18_DDR   DDRE
 
-    #define DIO19_PIN PINE7
+    #define DIO19_PIN   PINE7
     #define DIO19_RPORT PINE
     #define DIO19_WPORT PORTE
-    #define DIO19_PWM NULL
-    #define DIO19_DDR DDRE
+    #define DIO19_PWM   NULL
+    #define DIO19_DDR   DDRE
 
-    #define DIO20_PIN PINB0
+    #define DIO20_PIN   PINB0
     #define DIO20_RPORT PINB
     #define DIO20_WPORT PORTB
-    #define DIO20_PWM NULL
-    #define DIO20_DDR DDRB
+    #define DIO20_PWM   NULL
+    #define DIO20_DDR   DDRB
 
-    #define DIO21_PIN PINB1
+    #define DIO21_PIN   PINB1
     #define DIO21_RPORT PINB
     #define DIO21_WPORT PORTB
-    #define DIO21_PWM NULL
-    #define DIO21_DDR DDRB
+    #define DIO21_PWM   NULL
+    #define DIO21_DDR   DDRB
 
-    #define DIO22_PIN PINB2
+    #define DIO22_PIN   PINB2
     #define DIO22_RPORT PINB
     #define DIO22_WPORT PORTB
-    #define DIO22_PWM NULL
-    #define DIO22_DDR DDRB
+    #define DIO22_PWM   NULL
+    #define DIO22_DDR   DDRB
 
-    #define DIO23_PIN PINB3
+    #define DIO23_PIN   PINB3
     #define DIO23_RPORT PINB
     #define DIO23_WPORT PORTB
-    #define DIO23_PWM NULL
-    #define DIO23_DDR DDRB
+    #define DIO23_PWM   NULL
+    #define DIO23_DDR   DDRB
 
-    #define DIO24_PIN PINB4
+    #define DIO24_PIN   PINB4
     #define DIO24_RPORT PINB
     #define DIO24_WPORT PORTB
-    #define DIO24_PWM NULL
-    #define DIO24_DDR DDRB
+    #define DIO24_PWM   NULL
+    #define DIO24_DDR   DDRB
 
-    #define DIO25_PIN PINB5
+    #define DIO25_PIN   PINB5
     #define DIO25_RPORT PINB
     #define DIO25_WPORT PORTB
-    #define DIO25_PWM NULL
-    #define DIO25_DDR DDRB
+    #define DIO25_PWM   NULL
+    #define DIO25_DDR   DDRB
 
-    #define DIO26_PIN PINB6
+    #define DIO26_PIN   PINB6
     #define DIO26_RPORT PINB
     #define DIO26_WPORT PORTB
-    #define DIO26_PWM NULL
-    #define DIO26_DDR DDRB
+    #define DIO26_PWM   NULL
+    #define DIO26_DDR   DDRB
 
-    #define DIO27_PIN PINB7
+    #define DIO27_PIN   PINB7
     #define DIO27_RPORT PINB
     #define DIO27_WPORT PORTB
-    #define DIO27_PWM NULL
-    #define DIO27_DDR DDRB
+    #define DIO27_PWM   NULL
+    #define DIO27_DDR   DDRB
 
-    #define DIO28_PIN PINA0
+    #define DIO28_PIN   PINA0
     #define DIO28_RPORT PINA
     #define DIO28_WPORT PORTA
-    #define DIO28_PWM NULL
-    #define DIO28_DDR DDRA
+    #define DIO28_PWM   NULL
+    #define DIO28_DDR   DDRA
 
-    #define DIO29_PIN PINA1
+    #define DIO29_PIN   PINA1
     #define DIO29_RPORT PINA
     #define DIO29_WPORT PORTA
-    #define DIO29_PWM NULL
-    #define DIO29_DDR DDRA
+    #define DIO29_PWM   NULL
+    #define DIO29_DDR   DDRA
 
-    #define DIO30_PIN PINA2
+    #define DIO30_PIN   PINA2
     #define DIO30_RPORT PINA
     #define DIO30_WPORT PORTA
-    #define DIO30_PWM NULL
-    #define DIO30_DDR DDRA
+    #define DIO30_PWM   NULL
+    #define DIO30_DDR   DDRA
 
-    #define DIO31_PIN PINA3
+    #define DIO31_PIN   PINA3
     #define DIO31_RPORT PINA
     #define DIO31_WPORT PORTA
-    #define DIO31_PWM NULL
-    #define DIO31_DDR DDRA
+    #define DIO31_PWM   NULL
+    #define DIO31_DDR   DDRA
 
-    #define DIO32_PIN PINA4
+    #define DIO32_PIN   PINA4
     #define DIO32_RPORT PINA
     #define DIO32_WPORT PORTA
-    #define DIO32_PWM NULL
-    #define DIO32_DDR DDRA
+    #define DIO32_PWM   NULL
+    #define DIO32_DDR   DDRA
 
-    #define DIO33_PIN PINA5
+    #define DIO33_PIN   PINA5
     #define DIO33_RPORT PINA
     #define DIO33_WPORT PORTA
-    #define DIO33_PWM NULL
-    #define DIO33_DDR DDRA
+    #define DIO33_PWM   NULL
+    #define DIO33_DDR   DDRA
 
-    #define DIO34_PIN PINA6
+    #define DIO34_PIN   PINA6
     #define DIO34_RPORT PINA
     #define DIO34_WPORT PORTA
-    #define DIO34_PWM NULL
-    #define DIO34_DDR DDRA
+    #define DIO34_PWM   NULL
+    #define DIO34_DDR   DDRA
 
-    #define DIO35_PIN PINA7
+    #define DIO35_PIN   PINA7
     #define DIO35_RPORT PINA
     #define DIO35_WPORT PORTA
-    #define DIO35_PWM NULL
-    #define DIO35_DDR DDRA
+    #define DIO35_PWM   NULL
+    #define DIO35_DDR   DDRA
 
-    #define DIO36_PIN PINE4
+    #define DIO36_PIN   PINE4
     #define DIO36_RPORT PINE
     #define DIO36_WPORT PORTE
-    #define DIO36_PWM NULL
-    #define DIO36_DDR DDRE
+    #define DIO36_PWM   NULL
+    #define DIO36_DDR   DDRE
 
-    #define DIO37_PIN PINE5
+    #define DIO37_PIN   PINE5
     #define DIO37_RPORT PINE
     #define DIO37_WPORT PORTE
-    #define DIO37_PWM NULL
-    #define DIO37_DDR DDRE
+    #define DIO37_PWM   NULL
+    #define DIO37_DDR   DDRE
 
-    #define DIO38_PIN PINF0
+    #define DIO38_PIN   PINF0
     #define DIO38_RPORT PINF
     #define DIO38_WPORT PORTF
-    #define DIO38_PWM NULL
-    #define DIO38_DDR DDRF
+    #define DIO38_PWM   NULL
+    #define DIO38_DDR   DDRF
 
-    #define DIO39_PIN PINF1
+    #define DIO39_PIN   PINF1
     #define DIO39_RPORT PINF
     #define DIO39_WPORT PORTF
-    #define DIO39_PWM NULL
-    #define DIO39_DDR DDRF
+    #define DIO39_PWM   NULL
+    #define DIO39_DDR   DDRF
 
-    #define DIO40_PIN PINF2
+    #define DIO40_PIN   PINF2
     #define DIO40_RPORT PINF
     #define DIO40_WPORT PORTF
-    #define DIO40_PWM NULL
-    #define DIO40_DDR DDRF
+    #define DIO40_PWM   NULL
+    #define DIO40_DDR   DDRF
 
-    #define DIO41_PIN PINF3
+    #define DIO41_PIN   PINF3
     #define DIO41_RPORT PINF
     #define DIO41_WPORT PORTF
-    #define DIO41_PWM NULL
-    #define DIO41_DDR DDRF
+    #define DIO41_PWM   NULL
+    #define DIO41_DDR   DDRF
 
-    #define DIO42_PIN PINF4
+    #define DIO42_PIN   PINF4
     #define DIO42_RPORT PINF
     #define DIO42_WPORT PORTF
-    #define DIO42_PWM NULL
-    #define DIO42_DDR DDRF
+    #define DIO42_PWM   NULL
+    #define DIO42_DDR   DDRF
 
-    #define DIO43_PIN PINF5
+    #define DIO43_PIN   PINF5
     #define DIO43_RPORT PINF
     #define DIO43_WPORT PORTF
-    #define DIO43_PWM NULL
-    #define DIO43_DDR DDRF
+    #define DIO43_PWM   NULL
+    #define DIO43_DDR   DDRF
 
-    #define DIO44_PIN PINF6
+    #define DIO44_PIN   PINF6
     #define DIO44_RPORT PINF
     #define DIO44_WPORT PORTF
-    #define DIO44_PWM NULL
-    #define DIO44_DDR DDRF
+    #define DIO44_PWM   NULL
+    #define DIO44_DDR   DDRF
 
-    #define DIO45_PIN PINF7
+    #define DIO45_PIN   PINF7
     #define DIO45_RPORT PINF
     #define DIO45_WPORT PORTF
-    #define DIO45_PWM NULL
-    #define DIO45_DDR DDRF
-
-    #define AIO0_PIN PINF0
-    #define AIO0_RPORT PINF
-    #define AIO0_WPORT PORTF
-    #define AIO0_PWM NULL
-    #define AIO0_DDR DDRF
-
-    #define AIO1_PIN PINF1
-    #define AIO1_RPORT PINF
-    #define AIO1_WPORT PORTF
-    #define AIO1_PWM NULL
-    #define AIO1_DDR DDRF
-
-    #define AIO2_PIN PINF2
-    #define AIO2_RPORT PINF
-    #define AIO2_WPORT PORTF
-    #define AIO2_PWM NULL
-    #define AIO2_DDR DDRF
-
-    #define AIO3_PIN PINF3
-    #define AIO3_RPORT PINF
-    #define AIO3_WPORT PORTF
-    #define AIO3_PWM NULL
-    #define AIO3_DDR DDRF
-
-    #define AIO4_PIN PINF4
-    #define AIO4_RPORT PINF
-    #define AIO4_WPORT PORTF
-    #define AIO4_PWM NULL
-    #define AIO4_DDR DDRF
-
-    #define AIO5_PIN PINF5
-    #define AIO5_RPORT PINF
-    #define AIO5_WPORT PORTF
-    #define AIO5_PWM NULL
-    #define AIO5_DDR DDRF
-
-    #define AIO6_PIN PINF6
-    #define AIO6_RPORT PINF
-    #define AIO6_WPORT PORTF
-    #define AIO6_PWM NULL
-    #define AIO6_DDR DDRF
-
-    #define AIO7_PIN PINF7
-    #define AIO7_RPORT PINF
-    #define AIO7_WPORT PORTF
-    #define AIO7_PWM NULL
-    #define AIO7_DDR DDRF
+    #define DIO45_PWM   NULL
+    #define DIO45_DDR   DDRF
+
+    #define AIO0_PIN    PINF0
+    #define AIO0_RPORT  PINF
+    #define AIO0_WPORT  PORTF
+    #define AIO0_PWM    NULL
+    #define AIO0_DDR    DDRF
+
+    #define AIO1_PIN    PINF1
+    #define AIO1_RPORT  PINF
+    #define AIO1_WPORT  PORTF
+    #define AIO1_PWM    NULL
+    #define AIO1_DDR    DDRF
+
+    #define AIO2_PIN    PINF2
+    #define AIO2_RPORT  PINF
+    #define AIO2_WPORT  PORTF
+    #define AIO2_PWM    NULL
+    #define AIO2_DDR    DDRF
+
+    #define AIO3_PIN    PINF3
+    #define AIO3_RPORT  PINF
+    #define AIO3_WPORT  PORTF
+    #define AIO3_PWM    NULL
+    #define AIO3_DDR    DDRF
+
+    #define AIO4_PIN    PINF4
+    #define AIO4_RPORT  PINF
+    #define AIO4_WPORT  PORTF
+    #define AIO4_PWM    NULL
+    #define AIO4_DDR    DDRF
+
+    #define AIO5_PIN    PINF5
+    #define AIO5_RPORT  PINF
+    #define AIO5_WPORT  PORTF
+    #define AIO5_PWM    NULL
+    #define AIO5_DDR    DDRF
+
+    #define AIO6_PIN    PINF6
+    #define AIO6_RPORT  PINF
+    #define AIO6_WPORT  PORTF
+    #define AIO6_PWM    NULL
+    #define AIO6_DDR    DDRF
+
+    #define AIO7_PIN    PINF7
+    #define AIO7_RPORT  PINF
+    #define AIO7_WPORT  PORTF
+    #define AIO7_PWM    NULL
+    #define AIO7_DDR    DDRF
 
     //-- Begin not supported by Teensyduino
     //-- don't use Arduino functions on these pins pinMode/digitalWrite/etc
-    #define DIO46_PIN PINE2
+    #define DIO46_PIN   PINE2
     #define DIO46_RPORT PINE
     #define DIO46_WPORT PORTE
-    #define DIO46_PWM NULL
-    #define DIO46_DDR DDRE
+    #define DIO46_PWM   NULL
+    #define DIO46_DDR   DDRE
 
-    #define DIO47_PIN PINE3
+    #define DIO47_PIN   PINE3
     #define DIO47_RPORT PINE
     #define DIO47_WPORT PORTE
-    #define DIO47_PWM NULL
-    #define DIO47_DDR DDRE
+    #define DIO47_PWM   NULL
+    #define DIO47_DDR   DDRE
     //-- end not supported by Teensyduino
 
     #undef PA0
-    #define PA0_PIN PINA0
-    #define PA0_RPORT PINA
-    #define PA0_WPORT PORTA
-    #define PA0_PWM NULL
-    #define PA0_DDR DDRA
+    #define PA0_PIN     PINA0
+    #define PA0_RPORT   PINA
+    #define PA0_WPORT   PORTA
+    #define PA0_PWM     NULL
+    #define PA0_DDR     DDRA
     #undef PA1
-    #define PA1_PIN PINA1
-    #define PA1_RPORT PINA
-    #define PA1_WPORT PORTA
-    #define PA1_PWM NULL
-    #define PA1_DDR DDRA
+    #define PA1_PIN     PINA1
+    #define PA1_RPORT   PINA
+    #define PA1_WPORT   PORTA
+    #define PA1_PWM     NULL
+    #define PA1_DDR     DDRA
     #undef PA2
-    #define PA2_PIN PINA2
-    #define PA2_RPORT PINA
-    #define PA2_WPORT PORTA
-    #define PA2_PWM NULL
-    #define PA2_DDR DDRA
+    #define PA2_PIN     PINA2
+    #define PA2_RPORT   PINA
+    #define PA2_WPORT   PORTA
+    #define PA2_PWM     NULL
+    #define PA2_DDR     DDRA
     #undef PA3
-    #define PA3_PIN PINA3
-    #define PA3_RPORT PINA
-    #define PA3_WPORT PORTA
-    #define PA3_PWM NULL
-    #define PA3_DDR DDRA
+    #define PA3_PIN     PINA3
+    #define PA3_RPORT   PINA
+    #define PA3_WPORT   PORTA
+    #define PA3_PWM     NULL
+    #define PA3_DDR     DDRA
     #undef PA4
-    #define PA4_PIN PINA4
-    #define PA4_RPORT PINA
-    #define PA4_WPORT PORTA
-    #define PA4_PWM NULL
-    #define PA4_DDR DDRA
+    #define PA4_PIN     PINA4
+    #define PA4_RPORT   PINA
+    #define PA4_WPORT   PORTA
+    #define PA4_PWM     NULL
+    #define PA4_DDR     DDRA
     #undef PA5
-    #define PA5_PIN PINA5
-    #define PA5_RPORT PINA
-    #define PA5_WPORT PORTA
-    #define PA5_PWM NULL
-    #define PA5_DDR DDRA
+    #define PA5_PIN     PINA5
+    #define PA5_RPORT   PINA
+    #define PA5_WPORT   PORTA
+    #define PA5_PWM     NULL
+    #define PA5_DDR     DDRA
     #undef PA6
-    #define PA6_PIN PINA6
-    #define PA6_RPORT PINA
-    #define PA6_WPORT PORTA
-    #define PA6_PWM NULL
-    #define PA6_DDR DDRA
+    #define PA6_PIN     PINA6
+    #define PA6_RPORT   PINA
+    #define PA6_WPORT   PORTA
+    #define PA6_PWM     NULL
+    #define PA6_DDR     DDRA
     #undef PA7
-    #define PA7_PIN PINA7
-    #define PA7_RPORT PINA
-    #define PA7_WPORT PORTA
-    #define PA7_PWM NULL
-    #define PA7_DDR DDRA
+    #define PA7_PIN     PINA7
+    #define PA7_RPORT   PINA
+    #define PA7_WPORT   PORTA
+    #define PA7_PWM     NULL
+    #define PA7_DDR     DDRA
 
     #undef PB0
-    #define PB0_PIN PINB0
-    #define PB0_RPORT PINB
-    #define PB0_WPORT PORTB
-    #define PB0_PWM NULL
-    #define PB0_DDR DDRB
+    #define PB0_PIN     PINB0
+    #define PB0_RPORT   PINB
+    #define PB0_WPORT   PORTB
+    #define PB0_PWM     NULL
+    #define PB0_DDR     DDRB
     #undef PB1
-    #define PB1_PIN PINB1
-    #define PB1_RPORT PINB
-    #define PB1_WPORT PORTB
-    #define PB1_PWM NULL
-    #define PB1_DDR DDRB
+    #define PB1_PIN     PINB1
+    #define PB1_RPORT   PINB
+    #define PB1_WPORT   PORTB
+    #define PB1_PWM     NULL
+    #define PB1_DDR     DDRB
     #undef PB2
-    #define PB2_PIN PINB2
-    #define PB2_RPORT PINB
-    #define PB2_WPORT PORTB
-    #define PB2_PWM NULL
-    #define PB2_DDR DDRB
+    #define PB2_PIN     PINB2
+    #define PB2_RPORT   PINB
+    #define PB2_WPORT   PORTB
+    #define PB2_PWM     NULL
+    #define PB2_DDR     DDRB
     #undef PB3
-    #define PB3_PIN PINB3
-    #define PB3_RPORT PINB
-    #define PB3_WPORT PORTB
-    #define PB3_PWM NULL
-    #define PB3_DDR DDRB
+    #define PB3_PIN     PINB3
+    #define PB3_RPORT   PINB
+    #define PB3_WPORT   PORTB
+    #define PB3_PWM     NULL
+    #define PB3_DDR     DDRB
     #undef PB4
-    #define PB4_PIN PINB4
-    #define PB4_RPORT PINB
-    #define PB4_WPORT PORTB
-    #define PB4_PWM NULL
-    #define PB4_DDR DDRB
+    #define PB4_PIN     PINB4
+    #define PB4_RPORT   PINB
+    #define PB4_WPORT   PORTB
+    #define PB4_PWM     NULL
+    #define PB4_DDR     DDRB
     #undef PB5
-    #define PB5_PIN PINB5
-    #define PB5_RPORT PINB
-    #define PB5_WPORT PORTB
-    #define PB5_PWM NULL
-    #define PB5_DDR DDRB
+    #define PB5_PIN     PINB5
+    #define PB5_RPORT   PINB
+    #define PB5_WPORT   PORTB
+    #define PB5_PWM     NULL
+    #define PB5_DDR     DDRB
     #undef PB6
-    #define PB6_PIN PINB6
-    #define PB6_RPORT PINB
-    #define PB6_WPORT PORTB
-    #define PB6_PWM NULL
-    #define PB6_DDR DDRB
+    #define PB6_PIN     PINB6
+    #define PB6_RPORT   PINB
+    #define PB6_WPORT   PORTB
+    #define PB6_PWM     NULL
+    #define PB6_DDR     DDRB
     #undef PB7
-    #define PB7_PIN PINB7
-    #define PB7_RPORT PINB
-    #define PB7_WPORT PORTB
-    #define PB7_PWM NULL
-    #define PB7_DDR DDRB
+    #define PB7_PIN     PINB7
+    #define PB7_RPORT   PINB
+    #define PB7_WPORT   PORTB
+    #define PB7_PWM     NULL
+    #define PB7_DDR     DDRB
 
     #undef PC0
-    #define PC0_PIN PINC0
-    #define PC0_RPORT PINC
-    #define PC0_WPORT PORTC
-    #define PC0_PWM NULL
-    #define PC0_DDR DDRC
+    #define PC0_PIN     PINC0
+    #define PC0_RPORT   PINC
+    #define PC0_WPORT   PORTC
+    #define PC0_PWM     NULL
+    #define PC0_DDR     DDRC
     #undef PC1
-    #define PC1_PIN PINC1
-    #define PC1_RPORT PINC
-    #define PC1_WPORT PORTC
-    #define PC1_PWM NULL
-    #define PC1_DDR DDRC
+    #define PC1_PIN     PINC1
+    #define PC1_RPORT   PINC
+    #define PC1_WPORT   PORTC
+    #define PC1_PWM     NULL
+    #define PC1_DDR     DDRC
     #undef PC2
-    #define PC2_PIN PINC2
-    #define PC2_RPORT PINC
-    #define PC2_WPORT PORTC
-    #define PC2_PWM NULL
-    #define PC2_DDR DDRC
+    #define PC2_PIN     PINC2
+    #define PC2_RPORT   PINC
+    #define PC2_WPORT   PORTC
+    #define PC2_PWM     NULL
+    #define PC2_DDR     DDRC
     #undef PC3
-    #define PC3_PIN PINC3
-    #define PC3_RPORT PINC
-    #define PC3_WPORT PORTC
-    #define PC3_PWM NULL
-    #define PC3_DDR DDRC
+    #define PC3_PIN     PINC3
+    #define PC3_RPORT   PINC
+    #define PC3_WPORT   PORTC
+    #define PC3_PWM     NULL
+    #define PC3_DDR     DDRC
     #undef PC4
-    #define PC4_PIN PINC4
-    #define PC4_RPORT PINC
-    #define PC4_WPORT PORTC
-    #define PC4_PWM NULL
-    #define PC4_DDR DDRC
+    #define PC4_PIN     PINC4
+    #define PC4_RPORT   PINC
+    #define PC4_WPORT   PORTC
+    #define PC4_PWM     NULL
+    #define PC4_DDR     DDRC
     #undef PC5
-    #define PC5_PIN PINC5
-    #define PC5_RPORT PINC
-    #define PC5_WPORT PORTC
-    #define PC5_PWM NULL
-    #define PC5_DDR DDRC
+    #define PC5_PIN     PINC5
+    #define PC5_RPORT   PINC
+    #define PC5_WPORT   PORTC
+    #define PC5_PWM     NULL
+    #define PC5_DDR     DDRC
     #undef PC6
-    #define PC6_PIN PINC6
-    #define PC6_RPORT PINC
-    #define PC6_WPORT PORTC
-    #define PC6_PWM NULL
-    #define PC6_DDR DDRC
+    #define PC6_PIN     PINC6
+    #define PC6_RPORT   PINC
+    #define PC6_WPORT   PORTC
+    #define PC6_PWM     NULL
+    #define PC6_DDR     DDRC
     #undef PC7
-    #define PC7_PIN PINC7
-    #define PC7_RPORT PINC
-    #define PC7_WPORT PORTC
-    #define PC7_PWM NULL
-    #define PC7_DDR DDRC
+    #define PC7_PIN     PINC7
+    #define PC7_RPORT   PINC
+    #define PC7_WPORT   PORTC
+    #define PC7_PWM     NULL
+    #define PC7_DDR     DDRC
 
     #undef PD0
-    #define PD0_PIN PIND0
-    #define PD0_RPORT PIND
-    #define PD0_WPORT PORTD
-    #define PD0_PWM NULL
-    #define PD0_DDR DDRD
+    #define PD0_PIN     PIND0
+    #define PD0_RPORT   PIND
+    #define PD0_WPORT   PORTD
+    #define PD0_PWM     NULL
+    #define PD0_DDR     DDRD
     #undef PD1
-    #define PD1_PIN PIND1
-    #define PD1_RPORT PIND
-    #define PD1_WPORT PORTD
-    #define PD1_PWM NULL
-    #define PD1_DDR DDRD
+    #define PD1_PIN     PIND1
+    #define PD1_RPORT   PIND
+    #define PD1_WPORT   PORTD
+    #define PD1_PWM     NULL
+    #define PD1_DDR     DDRD
     #undef PD2
-    #define PD2_PIN PIND2
-    #define PD2_RPORT PIND
-    #define PD2_WPORT PORTD
-    #define PD2_PWM NULL
-    #define PD2_DDR DDRD
+    #define PD2_PIN     PIND2
+    #define PD2_RPORT   PIND
+    #define PD2_WPORT   PORTD
+    #define PD2_PWM     NULL
+    #define PD2_DDR     DDRD
     #undef PD3
-    #define PD3_PIN PIND3
-    #define PD3_RPORT PIND
-    #define PD3_WPORT PORTD
-    #define PD3_PWM NULL
-    #define PD3_DDR DDRD
+    #define PD3_PIN     PIND3
+    #define PD3_RPORT   PIND
+    #define PD3_WPORT   PORTD
+    #define PD3_PWM     NULL
+    #define PD3_DDR     DDRD
     #undef PD4
-    #define PD4_PIN PIND4
-    #define PD4_RPORT PIND
-    #define PD4_WPORT PORTD
-    #define PD4_PWM NULL
-    #define PD4_DDR DDRD
+    #define PD4_PIN     PIND4
+    #define PD4_RPORT   PIND
+    #define PD4_WPORT   PORTD
+    #define PD4_PWM     NULL
+    #define PD4_DDR     DDRD
     #undef PD5
-    #define PD5_PIN PIND5
-    #define PD5_RPORT PIND
-    #define PD5_WPORT PORTD
-    #define PD5_PWM NULL
-    #define PD5_DDR DDRD
+    #define PD5_PIN     PIND5
+    #define PD5_RPORT   PIND
+    #define PD5_WPORT   PORTD
+    #define PD5_PWM     NULL
+    #define PD5_DDR     DDRD
     #undef PD6
-    #define PD6_PIN PIND6
-    #define PD6_RPORT PIND
-    #define PD6_WPORT PORTD
-    #define PD6_PWM NULL
-    #define PD6_DDR DDRD
+    #define PD6_PIN     PIND6
+    #define PD6_RPORT   PIND
+    #define PD6_WPORT   PORTD
+    #define PD6_PWM     NULL
+    #define PD6_DDR     DDRD
     #undef PD7
-    #define PD7_PIN PIND7
-    #define PD7_RPORT PIND
-    #define PD7_WPORT PORTD
-    #define PD7_PWM NULL
-    #define PD7_DDR DDRD
+    #define PD7_PIN     PIND7
+    #define PD7_RPORT   PIND
+    #define PD7_WPORT   PORTD
+    #define PD7_PWM     NULL
+    #define PD7_DDR     DDRD
 
     #undef PE0
-    #define PE0_PIN PINE0
-    #define PE0_RPORT PINE
-    #define PE0_WPORT PORTE
-    #define PE0_PWM NULL
-    #define PE0_DDR DDRE
+    #define PE0_PIN     PINE0
+    #define PE0_RPORT   PINE
+    #define PE0_WPORT   PORTE
+    #define PE0_PWM     NULL
+    #define PE0_DDR     DDRE
     #undef PE1
-    #define PE1_PIN PINE1
-    #define PE1_RPORT PINE
-    #define PE1_WPORT PORTE
-    #define PE1_PWM NULL
-    #define PE1_DDR DDRE
+    #define PE1_PIN     PINE1
+    #define PE1_RPORT   PINE
+    #define PE1_WPORT   PORTE
+    #define PE1_PWM     NULL
+    #define PE1_DDR     DDRE
     #undef PE2
-    #define PE2_PIN PINE2
-    #define PE2_RPORT PINE
-    #define PE2_WPORT PORTE
-    #define PE2_PWM NULL
-    #define PE2_DDR DDRE
+    #define PE2_PIN     PINE2
+    #define PE2_RPORT   PINE
+    #define PE2_WPORT   PORTE
+    #define PE2_PWM     NULL
+    #define PE2_DDR     DDRE
     #undef PE3
-    #define PE3_PIN PINE3
-    #define PE3_RPORT PINE
-    #define PE3_WPORT PORTE
-    #define PE3_PWM NULL
-    #define PE3_DDR DDRE
+    #define PE3_PIN     PINE3
+    #define PE3_RPORT   PINE
+    #define PE3_WPORT   PORTE
+    #define PE3_PWM     NULL
+    #define PE3_DDR     DDRE
     #undef PE4
-    #define PE4_PIN PINE4
-    #define PE4_RPORT PINE
-    #define PE4_WPORT PORTE
-    #define PE4_PWM NULL
-    #define PE4_DDR DDRE
+    #define PE4_PIN     PINE4
+    #define PE4_RPORT   PINE
+    #define PE4_WPORT   PORTE
+    #define PE4_PWM     NULL
+    #define PE4_DDR     DDRE
     #undef PE5
-    #define PE5_PIN PINE5
-    #define PE5_RPORT PINE
-    #define PE5_WPORT PORTE
-    #define PE5_PWM NULL
-    #define PE5_DDR DDRE
+    #define PE5_PIN     PINE5
+    #define PE5_RPORT   PINE
+    #define PE5_WPORT   PORTE
+    #define PE5_PWM     NULL
+    #define PE5_DDR     DDRE
     #undef PE6
-    #define PE6_PIN PINE6
-    #define PE6_RPORT PINE
-    #define PE6_WPORT PORTE
-    #define PE6_PWM NULL
-    #define PE6_DDR DDRE
+    #define PE6_PIN     PINE6
+    #define PE6_RPORT   PINE
+    #define PE6_WPORT   PORTE
+    #define PE6_PWM     NULL
+    #define PE6_DDR     DDRE
     #undef PE7
-    #define PE7_PIN PINE7
-    #define PE7_RPORT PINE
-    #define PE7_WPORT PORTE
-    #define PE7_PWM NULL
-    #define PE7_DDR DDRE
+    #define PE7_PIN     PINE7
+    #define PE7_RPORT   PINE
+    #define PE7_WPORT   PORTE
+    #define PE7_PWM     NULL
+    #define PE7_DDR     DDRE
 
     #undef PF0
-    #define PF0_PIN PINF0
-    #define PF0_RPORT PINF
-    #define PF0_WPORT PORTF
-    #define PF0_PWM NULL
-    #define PF0_DDR DDRF
+    #define PF0_PIN     PINF0
+    #define PF0_RPORT   PINF
+    #define PF0_WPORT   PORTF
+    #define PF0_PWM     NULL
+    #define PF0_DDR     DDRF
     #undef PF1
-    #define PF1_PIN PINF1
-    #define PF1_RPORT PINF
-    #define PF1_WPORT PORTF
-    #define PF1_PWM NULL
-    #define PF1_DDR DDRF
+    #define PF1_PIN     PINF1
+    #define PF1_RPORT   PINF
+    #define PF1_WPORT   PORTF
+    #define PF1_PWM     NULL
+    #define PF1_DDR     DDRF
     #undef PF2
-    #define PF2_PIN PINF2
-    #define PF2_RPORT PINF
-    #define PF2_WPORT PORTF
-    #define PF2_PWM NULL
-    #define PF2_DDR DDRF
+    #define PF2_PIN     PINF2
+    #define PF2_RPORT   PINF
+    #define PF2_WPORT   PORTF
+    #define PF2_PWM     NULL
+    #define PF2_DDR     DDRF
     #undef PF3
-    #define PF3_PIN PINF3
-    #define PF3_RPORT PINF
-    #define PF3_WPORT PORTF
-    #define PF3_PWM NULL
-    #define PF3_DDR DDRF
+    #define PF3_PIN     PINF3
+    #define PF3_RPORT   PINF
+    #define PF3_WPORT   PORTF
+    #define PF3_PWM     NULL
+    #define PF3_DDR     DDRF
     #undef PF4
-    #define PF4_PIN PINF4
-    #define PF4_RPORT PINF
-    #define PF4_WPORT PORTF
-    #define PF4_PWM NULL
-    #define PF4_DDR DDRF
+    #define PF4_PIN     PINF4
+    #define PF4_RPORT   PINF
+    #define PF4_WPORT   PORTF
+    #define PF4_PWM     NULL
+    #define PF4_DDR     DDRF
     #undef PF5
-    #define PF5_PIN PINF5
-    #define PF5_RPORT PINF
-    #define PF5_WPORT PORTF
-    #define PF5_PWM NULL
-    #define PF5_DDR DDRF
+    #define PF5_PIN     PINF5
+    #define PF5_RPORT   PINF
+    #define PF5_WPORT   PORTF
+    #define PF5_PWM     NULL
+    #define PF5_DDR     DDRF
     #undef PF6
-    #define PF6_PIN PINF6
-    #define PF6_RPORT PINF
-    #define PF6_WPORT PORTF
-    #define PF6_PWM NULL
-    #define PF6_DDR DDRF
+    #define PF6_PIN     PINF6
+    #define PF6_RPORT   PINF
+    #define PF6_WPORT   PORTF
+    #define PF6_PWM     NULL
+    #define PF6_DDR     DDRF
     #undef PF7
-    #define PF7_PIN PINF7
-    #define PF7_RPORT PINF
-    #define PF7_WPORT PORTF
-    #define PF7_PWM NULL
-    #define PF7_DDR DDRF
+    #define PF7_PIN     PINF7
+    #define PF7_RPORT   PINF
+    #define PF7_WPORT   PORTF
+    #define PF7_PWM     NULL
+    #define PF7_DDR     DDRF
 
   #endif // AT90USBxx_TEENSYPP_ASSIGNMENTS Teensyduino assignments
 #endif // __AVR_AT90usbxxx__
diff --git a/Marlin/pins_A4JP.h b/Marlin/pins_A4JP.h
index 28db6c8eaec7eb90cb7b0732522ab1e54b126ae4..68549de1aa77ade1b83b12d27c7b43186475afb1 100644
--- a/Marlin/pins_A4JP.h
+++ b/Marlin/pins_A4JP.h
@@ -104,53 +104,51 @@
 //
 // Heaters / Fans
 //
-#define HEATER_0_PIN   9
-#define HEATER_1_PIN   7
-#define HEATER_BED_PIN 3
+#define HEATER_0_PIN         9
+#define HEATER_1_PIN         7
+#define HEATER_BED_PIN       3
 
-#define FAN_PIN        8
-#define FAN0_PIN       6
-#define FAN1_PIN       2
+#define FAN_PIN              8
+#define FAN0_PIN             6
+#define FAN1_PIN             2
 
-#define TEMP_0_PIN     0
-#define TEMP_BED_PIN   7
+#define TEMP_0_PIN           0
+#define TEMP_BED_PIN         7
 
-#define SDSS          53
-#define LED_PIN       13
-#define PS_ON_PIN      4
+#define SDSS                53
+#define LED_PIN             13
+#define PS_ON_PIN            4
 
 //
 // LCD / Controller
 //
-#define LCD_PINS_RS     70 //ext2_5
-#define LCD_PINS_ENABLE 71 //ext2_7
-#define LCD_PINS_D4     72 ///////Ext2 9 ?
-#define LCD_PINS_D5     73 ///////Ext2 11 ?
-#define LCD_PINS_D6     74 //ext2_13
-#define LCD_PINS_D7     75 ///////Ext2 15 ?
-#define BEEPER_PIN      -1
-
-#define BTN_HOME        80 //ext_16
-#define BTN_CENTER      81 //ext_14
-#define BTN_ENC         BTN_CENTER
-#define BTN_RIGHT       82 //ext_12
-#define BTN_LEFT        83 //ext_10
-#define BTN_UP          84 //ext2_8
-#define BTN_DOWN        85 //ext2_6
-
-#define HOME_PIN        BTN_HOME
+#define LCD_PINS_RS         70 //ext2_5
+#define LCD_PINS_ENABLE     71 //ext2_7
+#define LCD_PINS_D4         72 ///////Ext2 9 ?
+#define LCD_PINS_D5         73 ///////Ext2 11 ?
+#define LCD_PINS_D6         74 //ext2_13
+#define LCD_PINS_D7         75 ///////Ext2 15 ?
+#define BEEPER_PIN          -1
+
+#define BTN_HOME            80 //ext_16
+#define BTN_CENTER          81 //ext_14
+#define BTN_ENC             BTN_CENTER
+#define BTN_RIGHT           82 //ext_12
+#define BTN_LEFT            83 //ext_10
+#define BTN_UP              84 //ext2_8
+#define BTN_DOWN            85 //ext2_6
+
+#define HOME_PIN            BTN_HOME
 
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
-  #define BEEPER_PIN 44
+  #define BEEPER_PIN        44
   // Pins for DOGM SPI LCD Support
-  #define DOGLCD_A0  70
-  #define DOGLCD_CS  71
+  #define DOGLCD_A0         70
+  #define DOGLCD_CS         71
   #define LCD_SCREEN_ROT_180
 
-  #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board
+  #define SD_DETECT_PIN     -1 // Pin 72 if using easy adapter board
 
-  #if ENABLED(TEMP_STAT_LEDS)
-    #define STAT_LED_RED      22
-    #define STAT_LED_BLUE     32
-  #endif
+  #define STAT_LED_RED_PIN  22
+  #define STAT_LED_BLUE_PIN 32
 #endif // VIKI2/miniVIKI
diff --git a/Marlin/pins_AZTEEG_X3.h b/Marlin/pins_AZTEEG_X3.h
index b33818ee79e2c56c24a8ad6f856b52ae7f0eb828..b7d1e726f0a778612f18551ff44a05b2b7dc7c83 100644
--- a/Marlin/pins_AZTEEG_X3.h
+++ b/Marlin/pins_AZTEEG_X3.h
@@ -41,16 +41,14 @@
   #define DOGLCD_CS         32
   #define BTN_ENC           12
 
-  #if ENABLED(TEMP_STAT_LEDS)
-    #undef STAT_LED_RED
-    #undef STAT_LED_BLUE
-    #define STAT_LED_RED    64
-    #define STAT_LED_BLUE   63
-  #endif
+  #undef STAT_LED_RED_PIN
+  #undef STAT_LED_BLUE_PIN
+  #define STAT_LED_RED_PIN  64
+  #define STAT_LED_BLUE_PIN 63
 
-#elif ENABLED(TEMP_STAT_LEDS)
+#else
 
-  #define STAT_LED_RED       6
-  #define STAT_LED_BLUE     11
+  #define STAT_LED_RED_PIN   6
+  #define STAT_LED_BLUE_PIN 11
 
 #endif
diff --git a/Marlin/pins_AZTEEG_X3_PRO.h b/Marlin/pins_AZTEEG_X3_PRO.h
index 4bc575a333aa2bab34e7844abaf4911bb6c3ef0c..e59279bd0a4afeadbbc53d3dc68969f91e24d574 100644
--- a/Marlin/pins_AZTEEG_X3_PRO.h
+++ b/Marlin/pins_AZTEEG_X3_PRO.h
@@ -117,6 +117,6 @@
   #undef SD_DETECT_PIN
   #define SD_DETECT_PIN    49 // For easy adapter board
 #else
-  #define STAT_LED_RED     32
-  #define STAT_LED_BLUE    35
+  #define STAT_LED_RED_PIN 32
+  #define STAT_LED_BLUE_PIN 35
 #endif
diff --git a/Marlin/pins_CNCONTROLS_11.h b/Marlin/pins_CNCONTROLS_11.h
index 174fb1634fcc875965a8900484d76d60d4807e45..cd3ce0a1193b25e19795ede942adc45844e6cc2e 100644
--- a/Marlin/pins_CNCONTROLS_11.h
+++ b/Marlin/pins_CNCONTROLS_11.h
@@ -115,5 +115,5 @@
 //
 // Misc. Functions
 //
-#define STAT_LED_BLUE      -1
-#define STAT_LED_RED       31
+#define STAT_LED_BLUE_PIN  -1
+#define STAT_LED_RED_PIN   31
diff --git a/Marlin/pins_CNCONTROLS_12.h b/Marlin/pins_CNCONTROLS_12.h
index c3d69458987b8a749aad789f47375812685577f2..30809c39cca209802e9f53d0c675fc63e77b5efd 100644
--- a/Marlin/pins_CNCONTROLS_12.h
+++ b/Marlin/pins_CNCONTROLS_12.h
@@ -111,8 +111,8 @@
 //#define UI1              43
 //#define UI2              37
 
-#define STAT_LED_BLUE      -1
-#define STAT_LED_RED       10 // TOOL_0_PWM_PIN
+#define STAT_LED_BLUE_PIN  -1
+#define STAT_LED_RED_PIN   10 // TOOL_0_PWM_PIN
 
 //
 // SD Card
diff --git a/Marlin/pins_MEGACONTROLLER.h b/Marlin/pins_MEGACONTROLLER.h
index 282884267419d7d18ab92e69ec1deeade21f5750..404ab53b0370ff4e6daa147b1742de53721fdf49 100644
--- a/Marlin/pins_MEGACONTROLLER.h
+++ b/Marlin/pins_MEGACONTROLLER.h
@@ -134,7 +134,7 @@
   // Pins for DOGM SPI LCD Support
   #define DOGLCD_A0        47
   #define DOGLCD_CS        45
-  #define LCD_PIN_BL       44  // backlight LED on PA3
+  #define LCD_BACKLIGHT_PIN 44  // backlight LED on PA3
 
   #define KILL_PIN         12
   // GLCD features
diff --git a/Marlin/pins_MKS_13.h b/Marlin/pins_MKS_13.h
index 3b5b242ab5c01e83bd38d2747b9a0ce19a077c53..0457be78c8f68419033252e77f82f74878fbcd2c 100644
--- a/Marlin/pins_MKS_13.h
+++ b/Marlin/pins_MKS_13.h
@@ -120,9 +120,9 @@
   #define BEEPER_PIN      25
 
   // yellow               RED-LED
-  #define STAT_LED_RED    16
+  #define STAT_LED_RED_PIN 16
 
   // white                BLUE-LED
-  #define STAT_LED_BLUE   17
+  #define STAT_LED_BLUE_PIN 17
 
 #endif
diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h
index f2a2bbb0faa27478588dc10a352e7317cfb1940c..82b2cdc1c4f08201541ae6f68af9f8e4ddf3280c 100644
--- a/Marlin/pins_PRINTRBOARD.h
+++ b/Marlin/pins_PRINTRBOARD.h
@@ -131,8 +131,8 @@
 
   #define SDSS 45
   #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test)
-  #if ENABLED(TEMP_STAT_LEDS)
-    #define STAT_LED_RED      12 //Non-FastIO
-    #define STAT_LED_BLUE     10 //Non-FastIO
-  #endif
+
+  #define STAT_LED_RED_PIN  12 //Non-FastIO
+  #define STAT_LED_BLUE_PIN 10 //Non-FastIO
+
 #endif
diff --git a/Marlin/pins_PRINTRBOARD_REVF.h b/Marlin/pins_PRINTRBOARD_REVF.h
index 1b49f8986ad55c2e4e6fafa453f0bad0660e982e..548b506121bf2d23283a5f7b4430c973746c2b31 100644
--- a/Marlin/pins_PRINTRBOARD_REVF.h
+++ b/Marlin/pins_PRINTRBOARD_REVF.h
@@ -117,21 +117,18 @@
 
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
   #define BEEPER_PIN 32 //FastIO
-  // Pins for DOGM SPI LCD Support
   #define DOGLCD_A0  42 //Non-FastIO
   #define DOGLCD_CS  43 //Non-FastIO
   #define LCD_SCREEN_ROT_180
 
-  //The encoder and click button (FastIO Pins)
+  // (FastIO Pins)
   #define BTN_EN1 26
   #define BTN_EN2 27
   #define BTN_ENC 47
 
   #define SDSS 45
-  #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test)
+  #define SD_DETECT_PIN -1 // FastIO (Manual says 72)
 
-  #if ENABLED(TEMP_STAT_LEDS)
-    #define STAT_LED_RED      12 //Non-FastIO
-    #define STAT_LED_BLUE     10 //Non-FastIO
-  #endif
+  #define STAT_LED_RED_PIN 12 //Non-FastIO
+  #define STAT_LED_BLUE_PIN 10 //Non-FastIO
 #endif
diff --git a/Marlin/pins_RAMBO.h b/Marlin/pins_RAMBO.h
index 19778ebc9f06d012ee91bf65318f222a1c2fbbae..3379e479a35f8e7566725a7f34264cf00c60e903 100755
--- a/Marlin/pins_RAMBO.h
+++ b/Marlin/pins_RAMBO.h
@@ -169,10 +169,8 @@
 
       #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board
 
-      #if ENABLED(TEMP_STAT_LEDS)
-        #define STAT_LED_RED      22
-        #define STAT_LED_BLUE     32
-      #endif
+      #define STAT_LED_RED_PIN 22
+      #define STAT_LED_BLUE_PIN 32
 
     #else
 
diff --git a/Marlin/pins_RAMPS.h b/Marlin/pins_RAMPS.h
index 8d5fb41c91072f36f60bc503fbfcab9d3aa17be8..5685add8a1a090da9f159558c1f03f657d2dbb78 100644
--- a/Marlin/pins_RAMPS.h
+++ b/Marlin/pins_RAMPS.h
@@ -240,7 +240,7 @@
       #define KILL_PIN 41
 
       #if ENABLED(BQ_LCD_SMART_CONTROLLER)
-        #define LCD_PIN_BL 39
+        #define LCD_BACKLIGHT_PIN 39
       #endif
 
     #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
@@ -280,10 +280,9 @@
 
       #define KILL_PIN         31
 
-      #if ENABLED(TEMP_STAT_LEDS)
-        #define STAT_LED_RED   32
-        #define STAT_LED_BLUE  35
-      #endif
+      #define STAT_LED_RED_PIN 32
+      #define STAT_LED_BLUE_PIN 35
+
     #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
       #define BTN_EN1 35  // reverse if the encoder turns the wrong way.
       #define BTN_EN2 37
@@ -294,13 +293,13 @@
       #define BEEPER_PIN 23
       #define DOGLCD_CS 29
       #define DOGLCD_A0 27
-      #define LCD_PIN_BL 33
+      #define LCD_BACKLIGHT_PIN 33
     #elif ENABLED(MINIPANEL)
       #define BEEPER_PIN 42
       // Pins for DOGM SPI LCD Support
       #define DOGLCD_A0  44
       #define DOGLCD_CS  66
-      #define LCD_PIN_BL 65 // backlight LED on A11/D65
+      #define LCD_BACKLIGHT_PIN 65 // backlight LED on A11/D65
       #define SDSS   53
 
       #define KILL_PIN 64
diff --git a/Marlin/pins_SANGUINOLOLU_11.h b/Marlin/pins_SANGUINOLOLU_11.h
index a6220c596a69ed8fcaa79dc317d37509f79fd2de..15ed6a080a725f2299665de4d79337d522e80635 100644
--- a/Marlin/pins_SANGUINOLOLU_11.h
+++ b/Marlin/pins_SANGUINOLOLU_11.h
@@ -56,7 +56,7 @@
 #if IS_MELZI
   #define LED_PIN          27 // On some broken versions of the Sanguino libraries the pin definitions are wrong, so LED_PIN needs to be 28. But you should upgrade your Sanguino libraries! See #368.
 #elif MB(STB_11)
-  #define LCD_PIN_BL       17 // LCD backlight LED
+  #define LCD_BACKLIGHT_PIN 17 // LCD backlight LED
 #endif
 
 #if ENABLED(Z_PROBE_SLED)
@@ -173,7 +173,7 @@
   // Pins for DOGM SPI LCD Support
   #define DOGLCD_A0             30
   #define DOGLCD_CS             17
-  #define LCD_PIN_BL            28 // backlight LED on PA3
+  #define LCD_BACKLIGHT_PIN     28 // backlight LED on PA3
   // GLCD features
   #define LCD_CONTRAST           1
   // Uncomment screen orientation
diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 00595e11057902c331c5a2b596bd3485b6e0ea66..06183a7f5fe72fec00d8bc5e308f8ee8e65388c3 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -733,19 +733,27 @@ void Stepper::isr() {
 
 void Stepper::init() {
 
-  digipot_init(); //Initialize Digipot Motor Current
-  microstep_init(); //Initialize Microstepping Pins
+  // Init Digipot Motor Current
+  #if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
+    digipot_init();
+  #endif
 
-  // initialise TMC Steppers
+  // Init Microstepping Pins
+  #if HAS_MICROSTEPS
+    microstep_init();
+  #endif
+
+  // Init TMC Steppers
   #if ENABLED(HAVE_TMCDRIVER)
     tmc_init();
   #endif
-    // initialise L6470 Steppers
+
+  // Init L6470 Steppers
   #if ENABLED(HAVE_L6470DRIVER)
     L6470_init();
   #endif
 
-  // Initialize Dir Pins
+  // Init Dir Pins
   #if HAS_X_DIR
     X_DIR_INIT;
   #endif
@@ -777,8 +785,7 @@ void Stepper::init() {
     E3_DIR_INIT;
   #endif
 
-  //Initialize Enable Pins - steppers default to disabled.
-
+  // Init Enable Pins - steppers default to disabled.
   #if HAS_X_ENABLE
     X_ENABLE_INIT;
     if (!X_ENABLE_ON) X_ENABLE_WRITE(HIGH);
@@ -787,7 +794,6 @@ void Stepper::init() {
       if (!X_ENABLE_ON) X2_ENABLE_WRITE(HIGH);
     #endif
   #endif
-
   #if HAS_Y_ENABLE
     Y_ENABLE_INIT;
     if (!Y_ENABLE_ON) Y_ENABLE_WRITE(HIGH);
@@ -796,7 +802,6 @@ void Stepper::init() {
       if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH);
     #endif
   #endif
-
   #if HAS_Z_ENABLE
     Z_ENABLE_INIT;
     if (!Z_ENABLE_ON) Z_ENABLE_WRITE(HIGH);
@@ -805,7 +810,6 @@ void Stepper::init() {
       if (!Z_ENABLE_ON) Z2_ENABLE_WRITE(HIGH);
     #endif
   #endif
-
   #if HAS_E0_ENABLE
     E0_ENABLE_INIT;
     if (!E_ENABLE_ON) E0_ENABLE_WRITE(HIGH);
@@ -823,9 +827,7 @@ void Stepper::init() {
     if (!E_ENABLE_ON) E3_ENABLE_WRITE(HIGH);
   #endif
 
-  //
-  // Init endstops and pullups here
-  //
+  // Init endstops and pullups
   endstops.init();
 
   #define _STEP_INIT(AXIS) AXIS ##_STEP_INIT
@@ -839,7 +841,7 @@ void Stepper::init() {
 
   #define E_AXIS_INIT(NUM) AXIS_INIT(e## NUM, E## NUM, E)
 
-  // Initialize Step Pins
+  // Init Step Pins
   #if HAS_X_STEP
     #if ENABLED(X_DUAL_STEPPER_DRIVERS) || ENABLED(DUAL_X_CARRIAGE)
       X2_STEP_INIT;
@@ -1155,143 +1157,167 @@ void Stepper::report_positions() {
 
   // From Arduino DigitalPotControl example
   void Stepper::digitalPotWrite(int address, int value) {
-    digitalWrite(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip
+    WRITE(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip
     SPI.transfer(address); //  send in the address and value via SPI:
     SPI.transfer(value);
-    digitalWrite(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip:
+    WRITE(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip:
     //delay(10);
   }
 
 #endif //HAS_DIGIPOTSS
 
-void Stepper::digipot_init() {
-  #if HAS_DIGIPOTSS
-    const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT;
+#if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
 
-    SPI.begin();
-    pinMode(DIGIPOTSS_PIN, OUTPUT);
-    for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++) {
-      //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]);
-      digipot_current(i, digipot_motor_current[i]);
-    }
-  #endif
-  #if HAS_MOTOR_CURRENT_PWM
-    #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
-      pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
-      digipot_current(0, motor_current_setting[0]);
-    #endif
-    #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
-      pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
-      digipot_current(1, motor_current_setting[1]);
-    #endif
-    #if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
-      pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
-      digipot_current(2, motor_current_setting[2]);
-    #endif
-    //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise)
-    TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50);
-  #endif
-}
-
-void Stepper::digipot_current(uint8_t driver, int current) {
-  #if HAS_DIGIPOTSS
-    const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
-    digitalPotWrite(digipot_ch[driver], current);
-  #elif HAS_MOTOR_CURRENT_PWM
-    #define _WRITE_CURRENT_PWM(P) analogWrite(P, 255L * current / (MOTOR_CURRENT_PWM_RANGE))
-    switch (driver) {
+  void Stepper::digipot_init() {
+    #if HAS_DIGIPOTSS
+      static const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT;
+      SPI.begin();
+      SET_OUTPUT(DIGIPOTSS_PIN);
+      for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++) {
+        //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]);
+        digipot_current(i, digipot_motor_current[i]);
+      }
+    #elif HAS_MOTOR_CURRENT_PWM
       #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
-        case 0: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_XY_PIN); break;
+        SET_OUTPUT(MOTOR_CURRENT_PWM_XY_PIN);
+        digipot_current(0, motor_current_setting[0]);
       #endif
       #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
-        case 1: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_Z_PIN); break;
+        SET_OUTPUT(MOTOR_CURRENT_PWM_Z_PIN);
+        digipot_current(1, motor_current_setting[1]);
       #endif
       #if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
-        case 2: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_E_PIN); break;
+        SET_OUTPUT(MOTOR_CURRENT_PWM_E_PIN);
+        digipot_current(2, motor_current_setting[2]);
       #endif
-    }
-  #else
-    UNUSED(driver);
-    UNUSED(current);
-  #endif
-}
+      //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise)
+      TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50);
+    #endif
+  }
 
-void Stepper::microstep_init() {
-  #if HAS_MICROSTEPS_E1
-    pinMode(E1_MS1_PIN, OUTPUT);
-    pinMode(E1_MS2_PIN, OUTPUT);
-  #endif
+  void Stepper::digipot_current(uint8_t driver, int current) {
+    #if HAS_DIGIPOTSS
+      const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
+      digitalPotWrite(digipot_ch[driver], current);
+    #elif HAS_MOTOR_CURRENT_PWM
+      #define _WRITE_CURRENT_PWM(P) analogWrite(P, 255L * current / (MOTOR_CURRENT_PWM_RANGE))
+      switch (driver) {
+        #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
+          case 0: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_XY_PIN); break;
+        #endif
+        #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
+          case 1: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_Z_PIN); break;
+        #endif
+        #if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
+          case 2: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_E_PIN); break;
+        #endif
+      }
+    #endif
+  }
 
-  #if HAS_MICROSTEPS
-    pinMode(X_MS1_PIN, OUTPUT);
-    pinMode(X_MS2_PIN, OUTPUT);
-    pinMode(Y_MS1_PIN, OUTPUT);
-    pinMode(Y_MS2_PIN, OUTPUT);
-    pinMode(Z_MS1_PIN, OUTPUT);
-    pinMode(Z_MS2_PIN, OUTPUT);
-    pinMode(E0_MS1_PIN, OUTPUT);
-    pinMode(E0_MS2_PIN, OUTPUT);
-    const uint8_t microstep_modes[] = MICROSTEP_MODES;
-    for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
-      microstep_mode(i, microstep_modes[i]);
-  #endif
-}
+#endif
 
-/**
- * Software-controlled Microstepping
- */
+#if HAS_MICROSTEPS
+
+  /**
+   * Software-controlled Microstepping
+   */
 
-void Stepper::microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) {
-  if (ms1 >= 0) switch (driver) {
-    case 0: digitalWrite(X_MS1_PIN, ms1); break;
-    case 1: digitalWrite(Y_MS1_PIN, ms1); break;
-    case 2: digitalWrite(Z_MS1_PIN, ms1); break;
-    case 3: digitalWrite(E0_MS1_PIN, ms1); break;
+  void Stepper::microstep_init() {
+    SET_OUTPUT(X_MS1_PIN);
+    SET_OUTPUT(X_MS2_PIN);
+    #if HAS_MICROSTEPS_Y
+      SET_OUTPUT(Y_MS1_PIN);
+      SET_OUTPUT(Y_MS2_PIN);
+    #endif
+    #if HAS_MICROSTEPS_Z
+      SET_OUTPUT(Z_MS1_PIN);
+      SET_OUTPUT(Z_MS2_PIN);
+    #endif
+    #if HAS_MICROSTEPS_E0
+      SET_OUTPUT(E0_MS1_PIN);
+      SET_OUTPUT(E0_MS2_PIN);
+    #endif
     #if HAS_MICROSTEPS_E1
-      case 4: digitalWrite(E1_MS1_PIN, ms1); break;
+      SET_OUTPUT(E1_MS1_PIN);
+      SET_OUTPUT(E1_MS2_PIN);
     #endif
+    static const uint8_t microstep_modes[] = MICROSTEP_MODES;
+    for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
+      microstep_mode(i, microstep_modes[i]);
   }
-  if (ms2 >= 0) switch (driver) {
-    case 0: digitalWrite(X_MS2_PIN, ms2); break;
-    case 1: digitalWrite(Y_MS2_PIN, ms2); break;
-    case 2: digitalWrite(Z_MS2_PIN, ms2); break;
-    case 3: digitalWrite(E0_MS2_PIN, ms2); break;
-    #if PIN_EXISTS(E1_MS2)
-      case 4: digitalWrite(E1_MS2_PIN, ms2); break;
-    #endif
+
+  void Stepper::microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) {
+    if (ms1 >= 0) switch (driver) {
+      case 0: digitalWrite(X_MS1_PIN, ms1); break;
+      #if HAS_MICROSTEPS_Y
+        case 1: digitalWrite(Y_MS1_PIN, ms1); break;
+      #endif
+      #if HAS_MICROSTEPS_Z
+        case 2: digitalWrite(Z_MS1_PIN, ms1); break;
+      #endif
+      #if HAS_MICROSTEPS_E0
+        case 3: digitalWrite(E0_MS1_PIN, ms1); break;
+      #endif
+      #if HAS_MICROSTEPS_E1
+        case 4: digitalWrite(E1_MS1_PIN, ms1); break;
+      #endif
+    }
+    if (ms2 >= 0) switch (driver) {
+      case 0: digitalWrite(X_MS2_PIN, ms2); break;
+      #if HAS_MICROSTEPS_Y
+        case 1: digitalWrite(Y_MS2_PIN, ms2); break;
+      #endif
+      #if HAS_MICROSTEPS_Z
+        case 2: digitalWrite(Z_MS2_PIN, ms2); break;
+      #endif
+      #if HAS_MICROSTEPS_E0
+        case 3: digitalWrite(E0_MS2_PIN, ms2); break;
+      #endif
+      #if HAS_MICROSTEPS_E1
+        case 4: digitalWrite(E1_MS2_PIN, ms2); break;
+      #endif
+    }
   }
-}
 
-void Stepper::microstep_mode(uint8_t driver, uint8_t stepping_mode) {
-  switch (stepping_mode) {
-    case 1: microstep_ms(driver, MICROSTEP1); break;
-    case 2: microstep_ms(driver, MICROSTEP2); break;
-    case 4: microstep_ms(driver, MICROSTEP4); break;
-    case 8: microstep_ms(driver, MICROSTEP8); break;
-    case 16: microstep_ms(driver, MICROSTEP16); break;
+  void Stepper::microstep_mode(uint8_t driver, uint8_t stepping_mode) {
+    switch (stepping_mode) {
+      case 1: microstep_ms(driver, MICROSTEP1); break;
+      case 2: microstep_ms(driver, MICROSTEP2); break;
+      case 4: microstep_ms(driver, MICROSTEP4); break;
+      case 8: microstep_ms(driver, MICROSTEP8); break;
+      case 16: microstep_ms(driver, MICROSTEP16); break;
+    }
   }
-}
 
-void Stepper::microstep_readings() {
-  SERIAL_PROTOCOLLNPGM("MS1,MS2 Pins");
-  SERIAL_PROTOCOLPGM("X: ");
-  SERIAL_PROTOCOL(digitalRead(X_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(X_MS2_PIN));
-  SERIAL_PROTOCOLPGM("Y: ");
-  SERIAL_PROTOCOL(digitalRead(Y_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(Y_MS2_PIN));
-  SERIAL_PROTOCOLPGM("Z: ");
-  SERIAL_PROTOCOL(digitalRead(Z_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(Z_MS2_PIN));
-  SERIAL_PROTOCOLPGM("E0: ");
-  SERIAL_PROTOCOL(digitalRead(E0_MS1_PIN));
-  SERIAL_PROTOCOLLN(digitalRead(E0_MS2_PIN));
-  #if HAS_MICROSTEPS_E1
-    SERIAL_PROTOCOLPGM("E1: ");
-    SERIAL_PROTOCOL(digitalRead(E1_MS1_PIN));
-    SERIAL_PROTOCOLLN(digitalRead(E1_MS2_PIN));
-  #endif
-}
+  void Stepper::microstep_readings() {
+    SERIAL_PROTOCOLLNPGM("MS1,MS2 Pins");
+    SERIAL_PROTOCOLPGM("X: ");
+    SERIAL_PROTOCOL(READ(X_MS1_PIN));
+    SERIAL_PROTOCOLLN(READ(X_MS2_PIN));
+    #if HAS_MICROSTEPS_Y
+      SERIAL_PROTOCOLPGM("Y: ");
+      SERIAL_PROTOCOL(READ(Y_MS1_PIN));
+      SERIAL_PROTOCOLLN(READ(Y_MS2_PIN));
+    #endif
+    #if HAS_MICROSTEPS_Z
+      SERIAL_PROTOCOLPGM("Z: ");
+      SERIAL_PROTOCOL(READ(Z_MS1_PIN));
+      SERIAL_PROTOCOLLN(READ(Z_MS2_PIN));
+    #endif
+    #if HAS_MICROSTEPS_E0
+      SERIAL_PROTOCOLPGM("E0: ");
+      SERIAL_PROTOCOL(READ(E0_MS1_PIN));
+      SERIAL_PROTOCOLLN(READ(E0_MS2_PIN));
+    #endif
+    #if HAS_MICROSTEPS_E1
+      SERIAL_PROTOCOLPGM("E1: ");
+      SERIAL_PROTOCOL(READ(E1_MS1_PIN));
+      SERIAL_PROTOCOLLN(READ(E1_MS2_PIN));
+    #endif
+  }
+
+#endif // HAS_MICROSTEPS
 
 #if ENABLED(LIN_ADVANCE)
 
diff --git a/Marlin/stepper.h b/Marlin/stepper.h
index 995aaea82c84224920e030c0c822f344bce22a92..a1c62fe9416a97339d8711a9225a4ec9f2b8cbf6 100644
--- a/Marlin/stepper.h
+++ b/Marlin/stepper.h
@@ -239,13 +239,16 @@ class Stepper {
     //
     static FORCE_INLINE bool motor_direction(AxisEnum axis) { return TEST(last_direction_bits, axis); }
 
-    #if HAS_DIGIPOTSS
+    #if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
       static void digitalPotWrite(int address, int value);
+      static void digipot_current(uint8_t driver, int current);
+    #endif
+
+    #if HAS_MICROSTEPS
+      static void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2);
+      static void microstep_mode(uint8_t driver, uint8_t stepping);
+      static void microstep_readings();
     #endif
-    static void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2);
-    static void digipot_current(uint8_t driver, int current);
-    static void microstep_mode(uint8_t driver, uint8_t stepping);
-    static void microstep_readings();
 
     #if ENABLED(Z_DUAL_ENDSTOPS)
       static FORCE_INLINE void set_homing_flag(bool state) { performing_homing = state; }
@@ -380,7 +383,10 @@ class Stepper {
     }
 
     static void digipot_init();
-    static void microstep_init();
+
+    #if HAS_MICROSTEPS
+      static void microstep_init();
+    #endif
 
 };
 
diff --git a/Marlin/stepper_dac.cpp b/Marlin/stepper_dac.cpp
index 6c71b89f640b4e6cdc75736ac9f4c5d55078e62f..25cd7e6ee9b69bf85d5410f6ef627c606965ae3b 100644
--- a/Marlin/stepper_dac.cpp
+++ b/Marlin/stepper_dac.cpp
@@ -52,8 +52,7 @@
 
   int dac_init() {
     #if PIN_EXISTS(DAC_DISABLE)
-      pinMode(DAC_DISABLE_PIN, OUTPUT);
-      digitalWrite(DAC_DISABLE_PIN, LOW);  // set pin low to enable DAC
+      OUT_WRITE(DAC_DISABLE_PIN, LOW);  // set pin low to enable DAC
     #endif
 
     mcp4728_init();
diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h
index aeed61fc15d35573ca137c050cdfd31fe9cef55c..73ed9db905cef97e5f97d8f6d3567ce23d353740 100644
--- a/Marlin/ultralcd_impl_DOGM.h
+++ b/Marlin/ultralcd_impl_DOGM.h
@@ -220,14 +220,12 @@ void lcd_printPGM(const char* str) {
 // Initialize or re-initializw the LCD
 static void lcd_implementation_init() {
 
-  #if defined(LCD_PIN_BL) && LCD_PIN_BL > -1 // Enable LCD backlight
-    pinMode(LCD_PIN_BL, OUTPUT);
-    digitalWrite(LCD_PIN_BL, HIGH);
+  #if PIN_EXISTS(LCD_BACKLIGHT) // Enable LCD backlight
+    OUT_WRITE(LCD_BACKLIGHT_PIN, HIGH);
   #endif
 
-  #if defined(LCD_PIN_RESET) && LCD_PIN_RESET > -1
-    pinMode(LCD_PIN_RESET, OUTPUT);
-    digitalWrite(LCD_PIN_RESET, HIGH);
+  #if PIN_EXISTS(LCD_RESET)
+    OUT_WRITE(LCD_RESET_PIN, HIGH);
   #endif
 
   #if DISABLED(MINIPANEL) // setContrast not working for Mini Panel