Browse Source

Improve Due SW SPI, Fysetc sanity checks, &c. (#13939)

Bob Kuhn 6 years ago
parent
commit
456a0ee76b

+ 21
- 23
Marlin/src/HAL/HAL_AVR/u8g_com_HAL_AVR_sw_spi.cpp View File

64
 
64
 
65
 #include <U8glib.h>
65
 #include <U8glib.h>
66
 
66
 
67
-uint8_t u8g_bitData, u8g_bitNotData;
68
-uint8_t u8g_bitClock, u8g_bitNotClock;
69
-volatile uint8_t *u8g_outData;
70
-volatile uint8_t *u8g_outClock;
67
+uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
68
+volatile uint8_t *u8g_outData, *u8g_outClock;
71
 
69
 
72
 static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
70
 static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
73
   u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
71
   u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
82
   u8g_bitNotData ^= 0xFF;
80
   u8g_bitNotData ^= 0xFF;
83
 }
81
 }
84
 
82
 
85
-void U8G_spiSend_sw_AVR_mode_0(uint8_t val) {
86
-  uint8_t bitData = u8g_bitData;
87
-  uint8_t bitNotData = u8g_bitNotData;
88
-  uint8_t bitClock = u8g_bitClock;
89
-  uint8_t bitNotClock = u8g_bitNotClock;
90
-  volatile uint8_t *outData = u8g_outData;
91
-  volatile uint8_t *outClock = u8g_outClock;
83
+void u8g_spiSend_sw_AVR_mode_0(uint8_t val) {
84
+  uint8_t bitData = u8g_bitData,
85
+          bitNotData = u8g_bitNotData,
86
+          bitClock = u8g_bitClock,
87
+          bitNotClock = u8g_bitNotClock;
88
+  volatile uint8_t *outData = u8g_outData,
89
+                   *outClock = u8g_outClock;
92
   U8G_ATOMIC_START();
90
   U8G_ATOMIC_START();
93
   for (uint8_t i = 0; i < 8; i++) {
91
   for (uint8_t i = 0; i < 8; i++) {
94
     if (val & 0x80)
92
     if (val & 0x80)
102
   U8G_ATOMIC_END();
100
   U8G_ATOMIC_END();
103
 }
101
 }
104
 
102
 
105
-void U8G_spiSend_sw_AVR_mode_3(uint8_t val) {
106
-  uint8_t bitData = u8g_bitData;
107
-  uint8_t bitNotData = u8g_bitNotData;
108
-  uint8_t bitClock = u8g_bitClock;
109
-  uint8_t bitNotClock = u8g_bitNotClock;
110
-  volatile uint8_t *outData = u8g_outData;
111
-  volatile uint8_t *outClock = u8g_outClock;
103
+void u8g_spiSend_sw_AVR_mode_3(uint8_t val) {
104
+  uint8_t bitData = u8g_bitData,
105
+          bitNotData = u8g_bitNotData,
106
+          bitClock = u8g_bitClock,
107
+          bitNotClock = u8g_bitNotClock;
108
+  volatile uint8_t *outData = u8g_outData,
109
+                   *outClock = u8g_outClock;
112
   U8G_ATOMIC_START();
110
   U8G_ATOMIC_START();
113
   for (uint8_t i = 0; i < 8; i++) {
111
   for (uint8_t i = 0; i < 8; i++) {
114
     *outClock &= bitNotClock;
112
     *outClock &= bitNotClock;
124
 
122
 
125
 
123
 
126
 #if ENABLED(FYSETC_MINI_12864)
124
 #if ENABLED(FYSETC_MINI_12864)
127
-  #define U8G_spiSend_sw_AVR U8G_spiSend_sw_AVR_mode_3
125
+  #define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_3
128
 #else
126
 #else
129
-  #define U8G_spiSend_sw_AVR U8G_spiSend_sw_AVR_mode_0
127
+  #define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_0
130
 #endif
128
 #endif
131
 
129
 
132
 uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
130
 uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
162
       break;
160
       break;
163
 
161
 
164
     case U8G_COM_MSG_WRITE_BYTE:
162
     case U8G_COM_MSG_WRITE_BYTE:
165
-      U8G_spiSend_sw_AVR(arg_val);
163
+      SPISEND_SW_AVR(arg_val);
166
       break;
164
       break;
167
 
165
 
168
     case U8G_COM_MSG_WRITE_SEQ: {
166
     case U8G_COM_MSG_WRITE_SEQ: {
169
         uint8_t *ptr = (uint8_t *)arg_ptr;
167
         uint8_t *ptr = (uint8_t *)arg_ptr;
170
         while (arg_val > 0) {
168
         while (arg_val > 0) {
171
-          U8G_spiSend_sw_AVR(*ptr++);
169
+          SPISEND_SW_AVR(*ptr++);
172
           arg_val--;
170
           arg_val--;
173
         }
171
         }
174
       }
172
       }
177
       case U8G_COM_MSG_WRITE_SEQ_P: {
175
       case U8G_COM_MSG_WRITE_SEQ_P: {
178
         uint8_t *ptr = (uint8_t *)arg_ptr;
176
         uint8_t *ptr = (uint8_t *)arg_ptr;
179
         while (arg_val > 0) {
177
         while (arg_val > 0) {
180
-          U8G_spiSend_sw_AVR(u8g_pgm_read(ptr));
178
+          SPISEND_SW_AVR(u8g_pgm_read(ptr));
181
           ptr++;
179
           ptr++;
182
           arg_val--;
180
           arg_val--;
183
         }
181
         }

+ 12
- 28
Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_st7920_sw_spi.cpp View File

57
 
57
 
58
 #include "../../inc/MarlinConfigPre.h"
58
 #include "../../inc/MarlinConfigPre.h"
59
 
59
 
60
-#if HAS_GRAPHICAL_LCD
60
+#if ENABLED(U8GLIB_ST7920)
61
+
62
+#include "u8g_com_HAL_DUE_sw_spi_shared.h"
61
 
63
 
62
-#include "../shared/Marduino.h"
63
 #include "../shared/Delay.h"
64
 #include "../shared/Delay.h"
64
 
65
 
65
 #include <U8glib.h>
66
 #include <U8glib.h>
66
 
67
 
67
-#include "u8g_com_HAL_DUE_sw_spi_shared.h"
68
-
69
-Pio *SCK_pPio, *MOSI_pPio;
70
-uint32_t SCK_dwMask, MOSI_dwMask;
71
-
72
-static void spiSend_sw_DUE(uint8_t val) { // 800KHz
73
-  for (uint8_t i = 0; i < 8; i++) {
74
-    if (val & 0x80)
75
-      MOSI_pPio->PIO_SODR = MOSI_dwMask;
76
-    else
77
-      MOSI_pPio->PIO_CODR = MOSI_dwMask;
78
-    DELAY_NS(48);
79
-    SCK_pPio->PIO_SODR = SCK_dwMask;
80
-    DELAY_NS(905); // 762 dead, 810 garbage, 858/0 900kHz, 905/1 825k, 953/1 800k, 1000/2 725KHz
81
-    val <<= 1;
82
-    SCK_pPio->PIO_CODR = SCK_dwMask;
83
-  }
84
-}
68
+#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_0
85
 
69
 
86
 static uint8_t rs_last_state = 255;
70
 static uint8_t rs_last_state = 255;
87
 
71
 
88
 static void u8g_com_DUE_st7920_write_byte_sw_spi(uint8_t rs, uint8_t val) {
72
 static void u8g_com_DUE_st7920_write_byte_sw_spi(uint8_t rs, uint8_t val) {
89
   if (rs != rs_last_state) {  // time to send a command/data byte
73
   if (rs != rs_last_state) {  // time to send a command/data byte
90
     rs_last_state = rs;
74
     rs_last_state = rs;
91
-    spiSend_sw_DUE(rs ? 0x0FA : 0x0F8); // Command or Data
75
+    SPISEND_SW_DUE(rs ? 0x0FA : 0x0F8); // Command or Data
92
     DELAY_US(40); // give the controller some time to process the data: 20 is bad, 30 is OK, 40 is safe
76
     DELAY_US(40); // give the controller some time to process the data: 20 is bad, 30 is OK, 40 is safe
93
   }
77
   }
94
-  spiSend_sw_DUE(val & 0xF0);
95
-  spiSend_sw_DUE(val << 4);
78
+  SPISEND_SW_DUE(val & 0xF0);
79
+  SPISEND_SW_DUE(val << 4);
96
 }
80
 }
97
 
81
 
98
 uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
82
 uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
182
   }
166
   }
183
 
167
 
184
   void ST7920_set_cmd() {
168
   void ST7920_set_cmd() {
185
-    spiSend_sw_DUE(0xF8);
169
+    SPISEND_SW_DUE(0xF8);
186
     DELAY_US(40);
170
     DELAY_US(40);
187
   }
171
   }
188
 
172
 
189
   void ST7920_set_dat() {
173
   void ST7920_set_dat() {
190
-    spiSend_sw_DUE(0xFA);
174
+    SPISEND_SW_DUE(0xFA);
191
     DELAY_US(40);
175
     DELAY_US(40);
192
   }
176
   }
193
 
177
 
194
   void ST7920_write_byte(const uint8_t val) {
178
   void ST7920_write_byte(const uint8_t val) {
195
-    spiSend_sw_DUE(val & 0xF0);
196
-    spiSend_sw_DUE(val << 4);
179
+    SPISEND_SW_DUE(val & 0xF0);
180
+    SPISEND_SW_DUE(val << 4);
197
   }
181
   }
198
 #endif // LIGHTWEIGHT_UI
182
 #endif // LIGHTWEIGHT_UI
199
 
183
 
200
-#endif // HAS_GRAPHICAL_LCD
184
+#endif // U8GLIB_ST7920
201
 #endif // ARDUINO_ARCH_SAM
185
 #endif // ARDUINO_ARCH_SAM

+ 7
- 13
Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi.cpp View File

62
 #undef SPI_SPEED
62
 #undef SPI_SPEED
63
 #define SPI_SPEED 2  // About 2 MHz
63
 #define SPI_SPEED 2  // About 2 MHz
64
 
64
 
65
+#include "u8g_com_HAL_DUE_sw_spi_shared.h"
66
+
65
 #include "../shared/Marduino.h"
67
 #include "../shared/Marduino.h"
66
 #include "../shared/Delay.h"
68
 #include "../shared/Delay.h"
67
 
69
 
68
 #include <U8glib.h>
70
 #include <U8glib.h>
69
 
71
 
70
-void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index);
71
-void u8g_SetPILevel_DUE(u8g_t *u8g, uint8_t pin_index, uint8_t level);
72
-void U8G_spiSend_sw_DUE_mode_0(uint8_t val);
73
-void U8G_spiSend_sw_DUE_mode_3(uint8_t val);
74
-
75
-Pio *SCK_pPio, *MOSI_pPio;
76
-uint32_t SCK_dwMask, MOSI_dwMask;
77
-
78
 #if ENABLED(FYSETC_MINI_12864)
72
 #if ENABLED(FYSETC_MINI_12864)
79
-  #define U8G_spiSend_sw_DUE U8G_spiSend_sw_DUE_mode_3
73
+  #define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_3
80
 #else
74
 #else
81
-  #define U8G_spiSend_sw_DUE U8G_spiSend_sw_DUE_mode_0
75
+  #define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_0
82
 #endif
76
 #endif
83
 
77
 
84
 uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
78
 uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
121
       break;
115
       break;
122
 
116
 
123
     case U8G_COM_MSG_WRITE_BYTE:
117
     case U8G_COM_MSG_WRITE_BYTE:
124
-      U8G_spiSend_sw_DUE(arg_val);
118
+      SPISEND_SW_DUE(arg_val);
125
       break;
119
       break;
126
 
120
 
127
     case U8G_COM_MSG_WRITE_SEQ: {
121
     case U8G_COM_MSG_WRITE_SEQ: {
128
         uint8_t *ptr = (uint8_t *)arg_ptr;
122
         uint8_t *ptr = (uint8_t *)arg_ptr;
129
         while (arg_val > 0) {
123
         while (arg_val > 0) {
130
-          U8G_spiSend_sw_DUE(*ptr++);
124
+          SPISEND_SW_DUE(*ptr++);
131
           arg_val--;
125
           arg_val--;
132
         }
126
         }
133
       }
127
       }
136
       case U8G_COM_MSG_WRITE_SEQ_P: {
130
       case U8G_COM_MSG_WRITE_SEQ_P: {
137
         uint8_t *ptr = (uint8_t *)arg_ptr;
131
         uint8_t *ptr = (uint8_t *)arg_ptr;
138
         while (arg_val > 0) {
132
         while (arg_val > 0) {
139
-          U8G_spiSend_sw_DUE(u8g_pgm_read(ptr));
133
+          SPISEND_SW_DUE(u8g_pgm_read(ptr));
140
           ptr++;
134
           ptr++;
141
           arg_val--;
135
           arg_val--;
142
         }
136
         }

+ 11
- 11
Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.cpp View File

59
 
59
 
60
 #if HAS_GRAPHICAL_LCD
60
 #if HAS_GRAPHICAL_LCD
61
 
61
 
62
-#include "../shared/Marduino.h"
62
+#include "u8g_com_HAL_DUE_sw_spi_shared.h"
63
+
63
 #include "../shared/Delay.h"
64
 #include "../shared/Delay.h"
64
 
65
 
65
 #include <U8glib.h>
66
 #include <U8glib.h>
66
 
67
 
67
-#include "u8g_com_HAL_DUE_sw_spi_shared.h"
68
-
69
 void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index) {
68
 void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index) {
70
   PIO_Configure(g_APinDescription[u8g->pin_list[pin_index]].pPort, PIO_OUTPUT_1,
69
   PIO_Configure(g_APinDescription[u8g->pin_list[pin_index]].pPort, PIO_OUTPUT_1,
71
     g_APinDescription[u8g->pin_list[pin_index]].ulPin, g_APinDescription[u8g->pin_list[pin_index]].ulPinConfiguration);  // OUTPUT
70
     g_APinDescription[u8g->pin_list[pin_index]].ulPin, g_APinDescription[u8g->pin_list[pin_index]].ulPinConfiguration);  // OUTPUT
77
   if (level) port->PIO_SODR = mask; else port->PIO_CODR = mask;
76
   if (level) port->PIO_SODR = mask; else port->PIO_CODR = mask;
78
 }
77
 }
79
 
78
 
80
-extern Pio *SCK_pPio, *MOSI_pPio;
81
-extern uint32_t SCK_dwMask, MOSI_dwMask;
79
+Pio *SCK_pPio, *MOSI_pPio;
80
+uint32_t SCK_dwMask, MOSI_dwMask;
82
 
81
 
83
-void U8G_spiSend_sw_DUE_mode_0(uint8_t val) { // 800KHz
82
+void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz
84
   for (uint8_t i = 0; i < 8; i++) {
83
   for (uint8_t i = 0; i < 8; i++) {
85
     if (val & 0x80)
84
     if (val & 0x80)
86
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
85
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
88
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
87
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
89
     DELAY_NS(48);
88
     DELAY_NS(48);
90
     SCK_pPio->PIO_SODR = SCK_dwMask;
89
     SCK_pPio->PIO_SODR = SCK_dwMask;
91
-    DELAY_NS(905); // 762 dead, 810 garbage, 858/0 900kHz, 905/1 825k, 953/1 800k, 1000/2 725KHz
90
+    DELAY_NS(125);
92
     val <<= 1;
91
     val <<= 1;
93
     SCK_pPio->PIO_CODR = SCK_dwMask;
92
     SCK_pPio->PIO_CODR = SCK_dwMask;
94
   }
93
   }
95
 }
94
 }
96
 
95
 
97
-void U8G_spiSend_sw_DUE_mode_3(uint8_t val) { // 800KHz
96
+void u8g_spiSend_sw_DUE_mode_3(uint8_t val) { // 3.5MHz
98
   for (uint8_t i = 0; i < 8; i++) {
97
   for (uint8_t i = 0; i < 8; i++) {
99
     SCK_pPio->PIO_CODR = SCK_dwMask;
98
     SCK_pPio->PIO_CODR = SCK_dwMask;
100
-    DELAY_NS(48);
99
+    DELAY_NS(50);
101
     if (val & 0x80)
100
     if (val & 0x80)
102
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
101
       MOSI_pPio->PIO_SODR = MOSI_dwMask;
103
     else
102
     else
104
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
103
       MOSI_pPio->PIO_CODR = MOSI_dwMask;
105
-    SCK_pPio->PIO_SODR = SCK_dwMask;
106
-    DELAY_NS(905); // 762 dead, 810 garbage, 858/0 900kHz, 905/1 825k, 953/1 800k, 1000/2 725KHz
107
     val <<= 1;
104
     val <<= 1;
105
+    DELAY_NS(10);
106
+    SCK_pPio->PIO_SODR = SCK_dwMask;
107
+    DELAY_NS(70);
108
   }
108
   }
109
 }
109
 }
110
 
110
 

+ 9
- 0
Marlin/src/HAL/HAL_DUE/u8g_com_HAL_DUE_sw_spi_shared.h View File

21
  */
21
  */
22
 #pragma once
22
 #pragma once
23
 
23
 
24
+#include "../../inc/MarlinConfigPre.h"
25
+#include "../shared/Marduino.h"
26
+
24
 void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index);
27
 void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index);
25
 void u8g_SetPILevel_DUE(u8g_t *u8g, uint8_t pin_index, uint8_t level);
28
 void u8g_SetPILevel_DUE(u8g_t *u8g, uint8_t pin_index, uint8_t level);
29
+
30
+void u8g_spiSend_sw_DUE_mode_0(uint8_t val);
31
+void u8g_spiSend_sw_DUE_mode_3(uint8_t val);
32
+
33
+extern Pio *SCK_pPio, *MOSI_pPio;
34
+extern uint32_t SCK_dwMask, MOSI_dwMask;

+ 2
- 3
Marlin/src/HAL/HAL_LPC1768/u8g/u8g_com_HAL_LPC1768_st7920_sw_spi.cpp View File

57
 
57
 
58
 #include "../../../inc/MarlinConfigPre.h"
58
 #include "../../../inc/MarlinConfigPre.h"
59
 
59
 
60
-#if HAS_GRAPHICAL_LCD
60
+#if ENABLED(U8GLIB_ST7920)
61
 
61
 
62
 #include <U8glib.h>
62
 #include <U8glib.h>
63
 #include "SoftwareSPI.h"
63
 #include "SoftwareSPI.h"
141
   return 1;
141
   return 1;
142
 }
142
 }
143
 
143
 
144
-#endif // HAS_GRAPHICAL_LCD
145
-
144
+#endif // U8GLIB_ST7920
146
 #endif // TARGET_LPC1768
145
 #endif // TARGET_LPC1768

+ 2
- 2
Marlin/src/HAL/HAL_LPC1768/u8g/u8g_com_HAL_LPC1768_sw_spi.cpp View File

57
 
57
 
58
 #include "../../../inc/MarlinConfigPre.h"
58
 #include "../../../inc/MarlinConfigPre.h"
59
 
59
 
60
-#if HAS_GRAPHICAL_LCD
60
+#if HAS_GRAPHICAL_LCD && DISABLED(U8GLIB_ST7920)
61
 
61
 
62
 #include "SoftwareSPI.h"
62
 #include "SoftwareSPI.h"
63
 
63
 
203
   return 1;
203
   return 1;
204
 }
204
 }
205
 
205
 
206
-#endif // HAS_GRAPHICAL_LCD
206
+#endif // HAS_GRAPHICAL_LCD && !U8GLIB_ST7920
207
 #endif // TARGET_LPC1768
207
 #endif // TARGET_LPC1768

+ 7
- 2
Marlin/src/inc/Conditionals_LCD.h View File

156
     #define RGB_LED
156
     #define RGB_LED
157
   #elif ENABLED(FYSETC_MINI_12864_2_1)
157
   #elif ENABLED(FYSETC_MINI_12864_2_1)
158
     #define NEOPIXEL_LED
158
     #define NEOPIXEL_LED
159
-    #define NEOPIXEL_TYPE       NEO_GRB
159
+    #undef NEOPIXEL_TYPE
160
+    #define NEOPIXEL_TYPE       NEO_RGB
161
+    #undef NEOPIXEL_PIXELS
160
     #define NEOPIXEL_PIXELS     3
162
     #define NEOPIXEL_PIXELS     3
161
-    #define NEOPIXEL_BRIGHTNESS 127
163
+    #ifndef NEOPIXEL_BRIGHTNESS
164
+      #define NEOPIXEL_BRIGHTNESS 127
165
+    #endif
166
+    #define NEOPIXEL_STARTUP_TEST
162
   #endif
167
   #endif
163
 
168
 
164
 #endif
169
 #endif

+ 18
- 0
Marlin/src/inc/Conditionals_adv.h View File

79
     #endif
79
     #endif
80
   #endif
80
   #endif
81
 #endif
81
 #endif
82
+
83
+#if ENABLED(FYSETC_MINI_12864_2_1)
84
+  #define LED_CONTROL_MENU
85
+  #define LED_USER_PRESET_STARTUP
86
+  #define LED_COLOR_PRESETS
87
+  #ifndef LED_USER_PRESET_RED
88
+    #define LED_USER_PRESET_RED        255
89
+  #endif
90
+  #ifndef LED_USER_PRESET_GREEN
91
+    #define LED_USER_PRESET_GREEN      128
92
+  #endif
93
+  #ifndef LED_USER_PRESET_BLUE
94
+    #define LED_USER_PRESET_BLUE         0
95
+  #endif
96
+  #ifndef LED_USER_PRESET_BRIGHTNESS
97
+    #define LED_USER_PRESET_BRIGHTNESS 255
98
+  #endif
99
+#endif

+ 0
- 20
Marlin/src/inc/SanityCheck.h View File

1830
   #error "RGB_LED is required for FYSETC_MINI_12864 1.2 and 2.0."
1830
   #error "RGB_LED is required for FYSETC_MINI_12864 1.2 and 2.0."
1831
 #elif EITHER(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1) && DISABLED(LED_USER_PRESET_STARTUP)
1831
 #elif EITHER(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1) && DISABLED(LED_USER_PRESET_STARTUP)
1832
   #error "LED_USER_PRESET_STARTUP is required for FYSETC_MINI_12864 2.x displays."
1832
   #error "LED_USER_PRESET_STARTUP is required for FYSETC_MINI_12864 2.x displays."
1833
-#elif ENABLED(FYSETC_MINI_12864_2_1)
1834
-  #if DISABLED(NEOPIXEL_LED)
1835
-    #error "NEOPIXEL_LED is required for FYSETC_MINI_12864 Rev. 2.1."
1836
-  #elif NEOPIXEL_PIXELS != 3
1837
-    #error "NEOPIXEL_PIXELS should be 3 for FYSETC_MINI_12864 Rev. 2.1."
1838
-  #elif NEOPIXEL_BRIGHTNESS != 127
1839
-    #error "NEOPIXEL_BRIGHTNESS should be 127 for FYSETC_MINI_12864 Rev. 2.1."
1840
-  #else
1841
-    #ifndef NEO_GRB
1842
-      #define NEO_GRB 0xFAD
1843
-      #define _UNDO_NEO_GRB
1844
-    #endif
1845
-    #if NEOPIXEL_TYPE != NEO_GRB
1846
-      #error "NEOPIXEL_TYPE should be NEO_GRB for FYSETC_MINI_12864 Rev. 2.1."
1847
-    #endif
1848
-    #ifdef _UNDO_NEO_GRB
1849
-      #undef NEO_GRB
1850
-      #undef _UNDO_NEO_GRB
1851
-    #endif
1852
-  #endif
1853
 #endif
1833
 #endif
1854
 
1834
 
1855
 /**
1835
 /**

Loading…
Cancel
Save