瀏覽代碼

MKS_MINI, FYSETC RGB, backlight (#15334)

DrDitto 5 年之前
父節點
當前提交
04e4eb35be

+ 6
- 4
Marlin/src/Marlin.cpp 查看文件

@@ -974,6 +974,12 @@ void setup() {
974 974
 
975 975
   // UI must be initialized before EEPROM
976 976
   // (because EEPROM code calls the UI).
977
+
978
+  // Set up LEDs early
979
+  #if HAS_COLOR_LEDS
980
+    leds.setup();
981
+  #endif
982
+
977 983
   ui.init();
978 984
   ui.reset_status();
979 985
 
@@ -1068,10 +1074,6 @@ void setup() {
1068 1074
     OUT_WRITE(STAT_LED_BLUE_PIN, LOW); // OFF
1069 1075
   #endif
1070 1076
 
1071
-  #if HAS_COLOR_LEDS
1072
-    leds.setup();
1073
-  #endif
1074
-
1075 1077
   #if HAS_CASE_LIGHT
1076 1078
     #if DISABLED(CASE_LIGHT_USE_NEOPIXEL)
1077 1079
       if (PWM_PIN(CASE_LIGHT_PIN)) SET_PWM(CASE_LIGHT_PIN); else SET_OUTPUT(CASE_LIGHT_PIN);

+ 20
- 7
Marlin/src/lcd/dogm/u8g_dev_uc1701_mini12864_HAL.cpp 查看文件

@@ -170,32 +170,45 @@ uint8_t u8g_dev_uc1701_mini12864_HAL_2x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t m
170 170
     case U8G_DEV_MSG_INIT:
171 171
       u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_300NS);
172 172
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_init_seq);
173
+      #if ENABLED(MKS_MINI_12864)
174
+        u8g_Delay(5);
175
+      #endif
173 176
       break;
174 177
 
175 178
     case U8G_DEV_MSG_STOP: break;
176 179
 
177 180
     case U8G_DEV_MSG_PAGE_NEXT: {
178 181
       u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
179
-
180 182
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_data_start);
181
-      u8g_WriteByte(u8g, dev, 0x0B0 | (2*pb->p.page)); /* select current page */
182
-      u8g_SetAddress(u8g, dev, 1);           /* data mode */
183
+      #if ENABLED(MKS_MINI_12864)
184
+        u8g_Delay(5);
185
+      #endif
186
+      u8g_WriteByte(u8g, dev, 0x0B0 | (2 * pb->p.page)); /* select current page */
187
+      u8g_SetAddress(u8g, dev, 1); /* data mode */
183 188
       u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)pb->buf);
184 189
       u8g_SetChipSelect(u8g, dev, 0);
185
-
186 190
       u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_HAL_data_start);
187
-      u8g_WriteByte(u8g, dev, 0x0B0 | (2*pb->p.page+1)); /* select current page */
188
-      u8g_SetAddress(u8g, dev, 1);           /* data mode */
191
+      #if ENABLED(MKS_MINI_12864)
192
+        u8g_Delay(5);
193
+      #endif
194
+      u8g_WriteByte(u8g, dev, 0x0B0 | (2 * pb->p.page + 1)); /* select current page */
195
+      u8g_SetAddress(u8g, dev, 1); /* data mode */
189 196
       u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width);
190 197
       u8g_SetChipSelect(u8g, dev, 0);
191 198
     } break;
192 199
 
193 200
     case U8G_DEV_MSG_CONTRAST:
194 201
       u8g_SetChipSelect(u8g, dev, 1);
195
-      u8g_SetAddress(u8g, dev, 0);          /* instruction mode */
202
+      #if ENABLED(MKS_MINI_12864)
203
+        u8g_Delay(5);
204
+      #endif
205
+      u8g_SetAddress(u8g, dev, 0); /* instruction mode */
196 206
       u8g_WriteByte(u8g, dev, 0x081);
197 207
       u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2);
198 208
       u8g_SetChipSelect(u8g, dev, 0);
209
+      #if ENABLED(MKS_MINI_12864)
210
+        u8g_Delay(5);
211
+      #endif
199 212
       return 1;
200 213
   }
201 214
   return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg);

+ 4
- 4
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp 查看文件

@@ -21,7 +21,7 @@
21 21
  */
22 22
 
23 23
 /**
24
- * ultralcd_DOGM.cpp
24
+ * lcd/dogm/ultralcd_DOGM.h
25 25
  *
26 26
  * Implementation of the LCD display routines for a DOGM128 graphic display.
27 27
  * by STB for ErikZalm/Marlin. Common LCD 128x64 pixel graphic displays.
@@ -30,9 +30,9 @@
30 30
  * License: http://opensource.org/licenses/BSD-3-Clause
31 31
  *
32 32
  * With the use of:
33
- * u8glib by Oliver Kraus
34
- * https://github.com/olikraus/U8glib_Arduino
35
- * License: http://opensource.org/licenses/BSD-3-Clause
33
+ *  u8glib by Oliver Kraus
34
+ *  https://github.com/olikraus/U8glib_Arduino
35
+ *  License: http://opensource.org/licenses/BSD-3-Clause
36 36
  */
37 37
 
38 38
 #include "../../inc/MarlinConfigPre.h"

+ 119
- 61
Marlin/src/lcd/dogm/ultralcd_DOGM.h 查看文件

@@ -22,7 +22,7 @@
22 22
 #pragma once
23 23
 
24 24
 /**
25
- * ultralcd_DOGM.h
25
+ * lcd/dogm/ultralcd_DOGM.h
26 26
  */
27 27
 
28 28
 #include "../../inc/MarlinConfigPre.h"
@@ -30,7 +30,8 @@
30 30
 #include <U8glib.h>
31 31
 #include "HAL_LCD_class_defines.h"
32 32
 
33
-// LCD selection
33
+//#define ALTERNATIVE_LCD
34
+
34 35
 #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
35 36
   #define U8G_CLASS U8GLIB_ST7920_128X64_4X
36 37
   #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SCK_PIN) && (LCD_PINS_ENABLE == MOSI_PIN)
@@ -40,102 +41,159 @@
40 41
   #endif
41 42
 
42 43
 #elif ENABLED(U8GLIB_ST7920)
44
+
43 45
   // RepRap Discount Full Graphics Smart Controller
46
+
44 47
   #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SCK_PIN) && (LCD_PINS_ENABLE == MOSI_PIN)
45
-    #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL
46
-    #define U8G_PARAM LCD_PINS_RS // 2 stripes, HW SPI (shared with SD card, on AVR does not use standard LCD adapter)
48
+    #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL               // 2 stripes, HW SPI (Shared with SD card. Non-standard LCD adapter on AVR.)
49
+    #define U8G_PARAM LCD_PINS_RS
47 50
   #else
48
-    //#define U8G_CLASS U8GLIB_ST7920_128X64_4X
49
-    //#define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS     // Original u8glib device. 2 stripes, SW SPI
50
-    #define U8G_CLASS U8GLIB_ST7920_128X64_RRD
51
-    #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS       // Number of stripes can be adjusted in ultralcd_st7920_u8glib_rrd.h with PAGE_HEIGHT
52
-                                                                      // AVR version ignores these pin settings
53
-                                                                      // HAL version uses these pin settings
51
+    #if ENABLED(ALTERNATIVE_LCD)
52
+      #define U8G_CLASS U8GLIB_ST7920_128X64_4X                 // 2 stripes, SW SPI (Original u8glib device)
53
+    #else
54
+      #define U8G_CLASS U8GLIB_ST7920_128X64_RRD                // Adjust stripes with PAGE_HEIGHT in ultralcd_st7920_u8glib_rrd.h
55
+    #endif
56
+    #define U8G_PARAM LCD_PINS_D4, LCD_PINS_ENABLE, LCD_PINS_RS // AVR version ignores these pin settings
57
+                                                                // HAL version uses these pin settings
54 58
   #endif
55 59
 
56 60
 #elif ENABLED(CARTESIO_UI)
57
-  // The CartesioUI display
58
-  //#define U8G_CLASS U8GLIB_DOGM128_2X
59
-  //#define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // 4 stripes
60
-  #define U8G_CLASS U8GLIB_DOGM128_2X
61
-  #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                              // 4 stripes
61
+
62
+  // CartesioUI LCD
63
+
64
+  #if ENABLED(ALTERNATIVE_LCD)
65
+    #define U8G_CLASS U8GLIB_DOGM128_2X                         // 4 stripes
66
+    #define FORCE_SOFT_SPI                                      // SW-SPI
67
+  #else
68
+    #define U8G_CLASS U8GLIB_DOGM128_2X                         // 4 stripes (HW-SPI)
69
+  #endif
62 70
 
63 71
 #elif ENABLED(U8GLIB_LM6059_AF)
72
+
64 73
   // Based on the Adafruit ST7565 (http://www.adafruit.com/products/250)
65
-  //#define U8G_CLASS U8GLIB_LM6059
66
-  //#define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 8 stripes
67
-  #define U8G_CLASS U8GLIB_LM6059_2X
68
-  #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                              // 4 stripes
74
+
75
+  #if ENABLED(ALTERNATIVE_LCD)
76
+    #define U8G_CLASS U8GLIB_LM6059                             // 8 stripes (HW-SPI)
77
+  #else
78
+    #define U8G_CLASS U8GLIB_LM6059_2X                          // 4 stripes (HW-SPI)
79
+  #endif
69 80
 
70 81
 #elif ENABLED(U8GLIB_ST7565_64128N)
71
-  // The MaKrPanel, Mini Viki, Viki 2.0 & AZSMZ 12864 ST7565 controller
82
+
83
+  // MaKrPanel, Mini Viki, Viki 2.0, AZSMZ 12864 ST7565 controller
84
+
72 85
   #define SMART_RAMPS (MB(RAMPS_SMART_EFB) || MB(RAMPS_SMART_EEB) || MB(RAMPS_SMART_EFF) || MB(RAMPS_SMART_EEF) || MB(RAMPS_SMART_SF))
73
-  #if DOGLCD_SCK == SCK_PIN && DOGLCD_MOSI == MOSI_PIN && !SMART_RAMPS
74
-    #define U8G_CLASS U8GLIB_64128N_2X_HAL
75
-    #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // using HW-SPI
76
-  #else
77
-    #define U8G_CLASS U8GLIB_64128N_2X_HAL
78
-    #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // using SW-SPI
86
+  #define U8G_CLASS U8GLIB_64128N_2X_HAL                        // 4 stripes (HW-SPI)
87
+  #if SMART_RAMPS || DOGLCD_SCK != SCK_PIN || DOGLCD_MOSI != MOSI_PIN
88
+    #define FORCE_SOFT_SPI                                      // SW-SPI
79 89
   #endif
80 90
 
81 91
 #elif ENABLED(MKS_12864OLED_SSD1306)
92
+
82 93
   // MKS 128x64 (SSD1306) OLED I2C LCD
83
-  #define U8G_CLASS U8GLIB_SSD1306_128X64
84
-  #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0     // 8 stripes
85
-  //#define U8G_CLASS U8GLIB_SSD1306_128X64_2X
86
-  //#define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // 4 stripes
94
+
95
+  #define FORCE_SOFT_SPI                                        // SW-SPI
96
+
97
+  #if ENABLED(ALTERNATIVE_LCD)
98
+    #define U8G_CLASS U8GLIB_SSD1306_128X64_2X                  // 4 stripes
99
+  #else
100
+    #define U8G_CLASS U8GLIB_SSD1306_128X64                     // 8 stripes
101
+  #endif
87 102
 
88 103
 #elif ENABLED(U8GLIB_SSD1306)
89
-  // Generic support for SSD1306 OLED I2C LCDs
90
-  //#define U8G_CLASS U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE
91
-  //#define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)           // 4 stripes
92
-  #define U8G_CLASS U8GLIB_SSD1306_128X64_2X
93
-  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)             // 4 stripes
104
+
105
+  // Generic SSD1306 OLED I2C LCD
106
+
107
+  #if ENABLED(ALTERNATIVE_LCD)
108
+    #define U8G_CLASS U8GLIB_SSD1306_128X64_2X_I2C_2_WIRE       // 4 stripes
109
+  #else
110
+    #define U8G_CLASS U8GLIB_SSD1306_128X64_2X                  // 4 stripes
111
+  #endif
112
+  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)
94 113
 
95 114
 #elif ENABLED(MKS_12864OLED)
115
+
96 116
   // MKS 128x64 (SH1106) OLED I2C LCD
97
-  #define U8G_CLASS U8GLIB_SH1106_128X64
98
-  #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0     // 8 stripes
99
-  //#define U8G_CLASS U8GLIB_SH1106_128X64_2X
100
-  //#define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // 4 stripes
117
+
118
+  #define FORCE_SOFT_SPI                                        // SW-SPI
119
+
120
+  #if ENABLED(ALTERNATIVE_LCD)
121
+    #define U8G_CLASS U8GLIB_SH1106_128X64_2X                   // 4 stripes
122
+  #else
123
+    #define U8G_CLASS U8GLIB_SH1106_128X64                      // 8 stripes
124
+  #endif
125
+
101 126
 #elif ENABLED(U8GLIB_SH1106)
102
-  // Generic support for SH1106 OLED I2C LCDs
103
-  //#define U8G_CLASS U8GLIB_SH1106_128X64_2X_I2C_2_WIRE
104
-  //#define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)           // 4 stripes
105
-  #define U8G_CLASS U8GLIB_SH1106_128X64_2X
106
-  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)             // 4 stripes
127
+
128
+  // Generic SH1106 OLED I2C LCD
129
+
130
+  #if ENABLED(ALTERNATIVE_LCD)
131
+    #define U8G_CLASS U8GLIB_SH1106_128X64_2X_I2C_2_WIRE        // 4 stripes
132
+  #else
133
+    #define U8G_CLASS U8GLIB_SH1106_128X64_2X                   // 4 stripes
134
+  #endif
135
+  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)       // I2C
136
+
107 137
 #elif ENABLED(U8GLIB_SSD1309)
138
+
108 139
   // Generic support for SSD1309 OLED I2C LCDs
140
+
109 141
   #define U8G_CLASS U8GLIB_SSD1309_128X64
110
-  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)
111
-#elif ENABLED(MINIPANEL)
112
-  // MINIPanel display
113
-  //#define U8G_CLASS U8GLIB_MINI12864
114
-  //#define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 8 stripes
115
-  #define U8G_CLASS U8GLIB_MINI12864_2X
116
-  #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                              // 8 stripes
142
+  #define U8G_PARAM (U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST)       // I2C
143
+
117 144
 #elif ENABLED(FYSETC_MINI_12864)
118
-  // The FYSETC_MINI_12864 display
119
-  #define U8G_CLASS U8GLIB_MINI12864_2X_HAL
120
-  #if ENABLED(FORCE_SOFT_SPI)
121
-    #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0   // 4 stripes SW-SPI
145
+
146
+  // The FYSETC Mini 12864 display
147
+
148
+  #define U8G_CLASS U8GLIB_MINI12864_2X_HAL                     // 4 stripes
149
+
150
+#elif ENABLED(MKS_MINI_12864)
151
+
152
+  // The MKS_MINI_12864 V1/V2 aren't exact copies of the MiniPanel.
153
+  // Panel management is in u8g_dev_uc1701_mini12864_HAL.cpp with
154
+  // extra delays added to remove glitches seen with fast MCUs.
155
+
156
+  #define U8G_CLASS U8GLIB_MINI12864_2X_HAL                     // 8 stripes (HW-SPI)
157
+
158
+#elif ENABLED(MINIPANEL)
159
+
160
+  #if ENABLED(ALTERNATIVE_LCD)
161
+    #define U8G_CLASS U8GLIB_MINI12864
122 162
   #else
123
-    #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // 4 stripes HW-SPI
163
+    #define U8G_CLASS U8GLIB_MINI12864_2X                       // 8 stripes (HW-SPI)
124 164
   #endif
165
+
125 166
 #elif ENABLED(U8GLIB_SH1106_EINSTART)
167
+
126 168
   // Connected via motherboard header
169
+
127 170
   #define U8G_CLASS U8GLIB_SH1106_128X64
128 171
   #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, LCD_PINS_DC, LCD_PINS_RS
172
+
129 173
 #elif ENABLED(FSMC_GRAPHICAL_TFT)
174
+
130 175
   // Unspecified 320x240 TFT pre-initialized by built-in bootloader
176
+
131 177
   #define U8G_CLASS U8GLIB_TFT_320X240_UPSCALE_FROM_128X64
132 178
   #define U8G_PARAM FSMC_CS_PIN, FSMC_RS_PIN
179
+
133 180
 #else
134
-  // for regular DOGM128 display with HW-SPI
135
-  //#define U8G_CLASS U8GLIB_DOGM128
136
-  //#define U8G_PARAM DOGLCD_CS, DOGLCD_A0                            // HW-SPI Com: CS, A0  // 8 stripes
137
-  #define U8G_CLASS U8GLIB_DOGM128_2X
138
-  #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                              // HW-SPI Com: CS, A0 // 4 stripes
181
+
182
+  #if ENABLED(ALTERNATIVE_LCD)
183
+    #define U8G_CLASS U8GLIB_DOGM128                            // 8 stripes (HW-SPI)
184
+  #else
185
+    #define U8G_CLASS U8GLIB_DOGM128_2X                         // 4 stripes (HW-SPI)
186
+  #endif
187
+
188
+#endif
189
+
190
+// Use HW-SPI if no other option is specified
191
+#ifndef U8G_PARAM
192
+  #if ENABLED(FORCE_SOFT_SPI)
193
+    #define U8G_PARAM DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0 // SW-SPI
194
+  #else
195
+    #define U8G_PARAM DOGLCD_CS, DOGLCD_A0                      // HW-SPI
196
+  #endif
139 197
 #endif
140 198
 
141 199
 #ifndef LCD_PIXEL_WIDTH

+ 0
- 1
Marlin/src/pins/lpc1768/pins_MKS_SGEN_L.h 查看文件

@@ -217,7 +217,6 @@
217 217
       #define DOGLCD_A0    P0_16
218 218
       #define DOGLCD_SCK   P0_07
219 219
       #define DOGLCD_MOSI  P1_20
220
-      #define FORCE_SOFT_SPI
221 220
 
222 221
       #define LCD_BACKLIGHT_PIN -1
223 222
 

Loading…
取消
儲存