Quellcode durchsuchen

Fix LCD compile error, etc. (#12472)

Ludy vor 6 Jahren
Ursprung
Commit
1f93d2bcf7

+ 5
- 4
Marlin/src/inc/Conditionals_LCD.h Datei anzeigen

@@ -26,8 +26,6 @@
26 26
  * Conditionals that need to be set before Configuration_adv.h or pins.h
27 27
  */
28 28
 
29
-#define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
30
-
31 29
 #if ENABLED(CARTESIO_UI)
32 30
 
33 31
   #define DOGLCD
@@ -305,8 +303,11 @@
305 303
 #define HAS_GRAPHICAL_LCD    ENABLED(DOGLCD)
306 304
 #define HAS_CHARACTER_LCD   (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD)
307 305
 #define HAS_LCD_MENU        (ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS))
308
-#define HAS_DIGITAL_BUTTONS  ENABLED(NEWPANEL)
309
-#define HAS_ENCODER_WHEEL   (ENABLED(NEWPANEL) && DISABLED(ADC_KEYPAD))
306
+
307
+#define HAS_ADC_BUTTONS     ENABLED(ADC_KEYPAD)
308
+#define HAS_DIGITAL_BUTTONS (!HAS_ADC_BUTTONS && ENABLED(NEWPANEL))
309
+#define HAS_SHIFT_ENCODER   (!HAS_ADC_BUTTONS && (ENABLED(REPRAPWORLD_KEYPAD) || (HAS_SPI_LCD && DISABLED(NEWPANEL))))
310
+#define HAS_ENCODER_WHEEL   (!HAS_ADC_BUTTONS && ENABLED(NEWPANEL))
310 311
 
311 312
 #if HAS_GRAPHICAL_LCD
312 313
   /**

+ 81
- 86
Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp Datei anzeigen

@@ -28,7 +28,6 @@
28 28
   #define LCD_CLASS LiquidCrystal
29 29
 #endif
30 30
 extern LCD_CLASS lcd;
31
-LCD_CLASS *plcd = &lcd;
32 31
 
33 32
 int lcd_glyph_height(void) { return 1; }
34 33
 
@@ -868,11 +867,7 @@ static const hd44780_charmap_t g_hd44780_charmap_common[] PROGMEM = {
868 867
 
869 868
 /* return v1 - v2 */
870 869
 static int hd44780_charmap_compare(hd44780_charmap_t * v1, hd44780_charmap_t * v2) {
871
-  if (v1->uchar < v2->uchar)
872
-    return -1;
873
-  else if (v1->uchar > v2->uchar)
874
-    return 1;
875
-  return 0;
870
+  return (v1->uchar < v2->uchar) ? -1 : (v1->uchar > v2->uchar) ? 1 : 0;
876 871
 }
877 872
 
878 873
 static int pf_bsearch_cb_comp_hd4map_pgm(void *userdata, size_t idx, void * data_pin) {
@@ -882,83 +877,9 @@ static int pf_bsearch_cb_comp_hd4map_pgm(void *userdata, size_t idx, void * data
882 877
   return hd44780_charmap_compare(&localval, (hd44780_charmap_t *)data_pin);
883 878
 }
884 879
 
885
-#if DEBUG
886
-
887
-int test_hd44780_charmap(hd44780_charmap_t *data, size_t size, char *name, char flg_show_contents) {
888
-  int ret;
889
-  size_t idx = 0;
890
-  hd44780_charmap_t preval = {0, 0, 0};
891
-  hd44780_charmap_t pinval = {0, 0, 0};
892
-  char flg_error = 0;
893
-
894
-  int i;
895
-
896
-  TRACE("Test %s\n", name);
897
-
898
-  for (i = 0; i < size; i ++) {
899
-    memcpy_P (&pinval, &(data[i]), sizeof(pinval));
900
-
901
-    if (flg_show_contents) {
902
-    #if 1
903
-      TRACE("[% 4d] % 6" PRIu32 "(0x%04" PRIX32 ") --> 0x%02X,0x%02X%s\n", i, pinval.uchar, pinval.uchar, (unsigned int)(pinval.idx), (unsigned int)(pinval.idx2), (preval.uchar < pinval.uchar?"":" <--- ERROR"));
904
-    #else
905
-      TRACE("[% 4d]", i);
906
-      TRACE("% 6" PRIu32 "(0x%04" PRIX32 "),", pinval.uchar, pinval.uchar);
907
-      TRACE("0x%02X,", (unsigned int)(pinval.idx));
908
-      TRACE("0x%02X,", (unsigned int)(pinval.idx2));
909
-      TRACE("%s", (preval.uchar < pinval.uchar?"":" <--- ERROR"));
910
-    #endif
911
-    }
912
-    if (preval.uchar >= pinval.uchar) {
913
-      flg_error = 1;
914
-    //  TRACE("Error: out of order in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
915
-    //  return -1;
916
-    }
917
-    memcpy (&preval, &pinval, sizeof(pinval));
918
-
919
-    ret = pf_bsearch_r((void *)data, size, pf_bsearch_cb_comp_hd4map_pgm, (void *)&pinval, &idx);
920
-    if (ret < 0) {
921
-      flg_error = 1;
922
-      TRACE("Error: not found item in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
923
-      //return -1;
924
-    }
925
-    if (idx != i) {
926
-      flg_error = 1;
927
-      TRACE("Error: wrong index found item in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
928
-      //return -1;
929
-    }
930
-  }
931
-  if (flg_error) {
932
-    TRACE("\nError: in array %s\n\n", name);
933
-    return -1;
934
-  }
935
-  TRACE("\nPASS array %s\n\n", name);
936
-  return 0;
937
-}
938
-
939
-int test_hd44780_charmap_all(void) {
940
-  int flg_error = 0;
941
-  if (test_hd44780_charmap(g_hd44780_charmap_device, NUM_ARRAY(g_hd44780_charmap_device), "g_hd44780_charmap_device", 0) < 0) {
942
-    flg_error = 1;
943
-    test_hd44780_charmap(g_hd44780_charmap_device, NUM_ARRAY(g_hd44780_charmap_device), "g_hd44780_charmap_device", 1);
944
-  }
945
-  if (test_hd44780_charmap(g_hd44780_charmap_common, NUM_ARRAY(g_hd44780_charmap_common), "g_hd44780_charmap_common", 0) < 0) {
946
-    flg_error = 1;
947
-    test_hd44780_charmap(g_hd44780_charmap_common, NUM_ARRAY(g_hd44780_charmap_common), "g_hd44780_charmap_common", 1);
948
-  }
949
-  if (flg_error) {
950
-    TRACE("\nFAILED in hd44780 tests!\n");
951
-    return -1;
952
-  }
953
-  TRACE("\nPASS in hd44780 tests.\n");
954
-  return 0;
955
-}
956
-
957
-#endif // DEBUG
880
+void lcd_moveto(const uint8_t col, const uint8_t row) { lcd.setCursor(col, row); }
958 881
 
959
-void lcd_moveto(int col, int row) {
960
-  plcd->setCursor(col, row);
961
-}
882
+void lcd_put_int(const int i) { lcd.print(i); }
962 883
 
963 884
 // return < 0 on error
964 885
 // return the advanced cols
@@ -976,7 +897,7 @@ int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
976 897
 
977 898
   // TODO: fix the '\\' that doesnt exist in the HD44870
978 899
   if (c < 128) {
979
-    plcd->write((uint8_t)c);
900
+    lcd.write((uint8_t)c);
980 901
     return 1;
981 902
   }
982 903
   copy_address = NULL;
@@ -993,16 +914,16 @@ int lcd_put_wchar_max(wchar_t c, pixel_len_t max_length) {
993 914
     hd44780_charmap_t localval;
994 915
     // found
995 916
     memcpy_P(&localval, copy_address, sizeof(localval));
996
-    plcd->write(localval.idx);
917
+    lcd.write(localval.idx);
997 918
     if (max_length >= 2 && localval.idx2 > 0) {
998
-      plcd->write(localval.idx2);
919
+      lcd.write(localval.idx2);
999 920
       return 2;
1000 921
     }
1001 922
     return 1;
1002 923
   }
1003 924
 
1004 925
   // Not found, print '?' instead
1005
-  plcd->write((uint8_t)'?');
926
+  lcd.write((uint8_t)'?');
1006 927
   return 1;
1007 928
 }
1008 929
 
@@ -1037,4 +958,78 @@ int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length) {
1037 958
   return lcd_put_u8str_max_cb(utf8_str_P, read_byte_rom, max_length);
1038 959
 }
1039 960
 
961
+#if ENABLED(DEBUG_LCDPRINT)
962
+
963
+  int test_hd44780_charmap(hd44780_charmap_t *data, size_t size, char *name, char flg_show_contents) {
964
+    int ret;
965
+    size_t idx = 0;
966
+    hd44780_charmap_t preval = {0, 0, 0};
967
+    hd44780_charmap_t pinval = {0, 0, 0};
968
+    char flg_error = 0;
969
+
970
+    int i;
971
+
972
+    TRACE("Test %s\n", name);
973
+
974
+    for (i = 0; i < size; i ++) {
975
+      memcpy_P(&pinval, &(data[i]), sizeof(pinval));
976
+
977
+      if (flg_show_contents) {
978
+        #if 1
979
+          TRACE("[% 4d] % 6" PRIu32 "(0x%04" PRIX32 ") --> 0x%02X,0x%02X%s\n", i, pinval.uchar, pinval.uchar, (unsigned int)(pinval.idx), (unsigned int)(pinval.idx2), (preval.uchar < pinval.uchar?"":" <--- ERROR"));
980
+        #else
981
+          TRACE("[% 4d]", i);
982
+          TRACE("% 6" PRIu32 "(0x%04" PRIX32 "),", pinval.uchar, pinval.uchar);
983
+          TRACE("0x%02X,", (unsigned int)(pinval.idx));
984
+          TRACE("0x%02X,", (unsigned int)(pinval.idx2));
985
+          TRACE("%s", (preval.uchar < pinval.uchar?"":" <--- ERROR"));
986
+        #endif
987
+      }
988
+      if (preval.uchar >= pinval.uchar) {
989
+        flg_error = 1;
990
+        //TRACE("Error: out of order in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
991
+        //return -1;
992
+      }
993
+      memcpy(&preval, &pinval, sizeof(pinval));
994
+
995
+      ret = pf_bsearch_r((void *)data, size, pf_bsearch_cb_comp_hd4map_pgm, (void *)&pinval, &idx);
996
+      if (ret < 0) {
997
+        flg_error = 1;
998
+        TRACE("Error: not found item in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
999
+        //return -1;
1000
+      }
1001
+      if (idx != i) {
1002
+        flg_error = 1;
1003
+        TRACE("Error: wrong index found item in array %s: idx=%d, val=%d(0x%x)\n", name, i, pinval.uchar, pinval.uchar);
1004
+        //return -1;
1005
+      }
1006
+    }
1007
+    if (flg_error) {
1008
+      TRACE("\nError: in array %s\n\n", name);
1009
+      return -1;
1010
+    }
1011
+    TRACE("\nPASS array %s\n\n", name);
1012
+    return 0;
1013
+  }
1014
+
1015
+  int test_hd44780_charmap_all(void) {
1016
+    int flg_error = 0;
1017
+    if (test_hd44780_charmap(g_hd44780_charmap_device, NUM_ARRAY(g_hd44780_charmap_device), "g_hd44780_charmap_device", 0) < 0) {
1018
+      flg_error = 1;
1019
+      test_hd44780_charmap(g_hd44780_charmap_device, NUM_ARRAY(g_hd44780_charmap_device), "g_hd44780_charmap_device", 1);
1020
+    }
1021
+    if (test_hd44780_charmap(g_hd44780_charmap_common, NUM_ARRAY(g_hd44780_charmap_common), "g_hd44780_charmap_common", 0) < 0) {
1022
+      flg_error = 1;
1023
+      test_hd44780_charmap(g_hd44780_charmap_common, NUM_ARRAY(g_hd44780_charmap_common), "g_hd44780_charmap_common", 1);
1024
+    }
1025
+    if (flg_error) {
1026
+      TRACE("\nFAILED in hd44780 tests!\n");
1027
+      return -1;
1028
+    }
1029
+    TRACE("\nPASS in hd44780 tests.\n");
1030
+    return 0;
1031
+  }
1032
+
1033
+#endif // DEBUG_LCDPRINT
1034
+
1040 1035
 #endif // HAS_CHARACTER_LCD

+ 1
- 1
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp Datei anzeigen

@@ -25,7 +25,7 @@
25 25
 #if HAS_CHARACTER_LCD
26 26
 
27 27
 /**
28
- * ultralcd_impl_HD44780.cpp
28
+ * ultralcd_HD44780.cpp
29 29
  *
30 30
  * LCD display implementations for Hitachi HD44780.
31 31
  * These are the most common LCD character displays.

+ 4
- 6
Marlin/src/lcd/dogm/lcdprint_u8g.cpp Datei anzeigen

@@ -23,13 +23,11 @@ extern U8GLIB *pu8g;
23 23
 #include "u8g_fontutf8.h"
24 24
 #include "../lcdprint.h"
25 25
 
26
-int lcd_glyph_height(void) {
27
-  return u8g_GetFontBBXHeight(pu8g->getU8g());
28
-}
26
+int lcd_glyph_height(void) { return u8g_GetFontBBXHeight(pu8g->getU8g()); }
29 27
 
30
-void lcd_moveto(int col, int row) {
31
-  _lcd_setcursor(col, row);
32
-}
28
+void lcd_moveto(const uint8_t col, const uint8_t row) { _lcd_setcursor(col, row); }
29
+
30
+void lcd_put_int(const int i) { pu8g->print(i); }
33 31
 
34 32
 // return < 0 on error
35 33
 // return the advanced pixels

+ 1
- 1
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp Datei anzeigen

@@ -21,7 +21,7 @@
21 21
  */
22 22
 
23 23
 /**
24
- * ultralcd_impl_DOGM.cpp
24
+ * ultralcd_DOGM.cpp
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.

+ 1
- 1
Marlin/src/lcd/dogm/ultralcd_DOGM.h Datei anzeigen

@@ -21,7 +21,7 @@
21 21
  */
22 22
 
23 23
 /**
24
- * ultralcd_impl_DOGM.h
24
+ * ultralcd_DOGM.h
25 25
  */
26 26
 
27 27
 #include "../../inc/MarlinConfigPre.h"

+ 4
- 2
Marlin/src/lcd/lcdprint.h Datei anzeigen

@@ -48,10 +48,12 @@ int lcd_put_u8str_max(const char * utf8_str, pixel_len_t max_length);
48 48
  */
49 49
 int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length);
50 50
 
51
-void lcd_moveto(int col, int row);
51
+void lcd_moveto(const uint8_t col, const uint8_t row);
52
+
53
+void lcd_put_int(const int i);
52 54
 
53 55
 inline int lcd_put_u8str_P(PGM_P str) { return lcd_put_u8str_max_P(str, PIXEL_LEN_NOLIMIT); }
54 56
 
55 57
 inline int lcd_put_u8str(const char* str) { return lcd_put_u8str_max(str, PIXEL_LEN_NOLIMIT); }
56 58
 
57
-inline int lcd_put_wchar(wchar_t c) { return lcd_put_wchar_max(c, PIXEL_LEN_NOLIMIT); }
59
+inline int lcd_put_wchar(const wchar_t c) { return lcd_put_wchar_max(c, PIXEL_LEN_NOLIMIT); }

+ 1
- 1
Marlin/src/lcd/menu/menu_configuration.cpp Datei anzeigen

@@ -66,7 +66,7 @@ static void lcd_factory_settings() {
66 66
     ui.encoderPosition = 0;
67 67
     draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
68 68
     lcd_moveto((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2);
69
-    lcd_put_u8str(int(bar_percent)); lcd_put_wchar('%');
69
+    lcd_put_int(bar_percent); lcd_put_wchar('%');
70 70
     lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
71 71
   }
72 72
 

+ 69
- 56
Marlin/src/lcd/ultralcd.cpp Datei anzeigen

@@ -207,12 +207,6 @@ void MarlinUI::init() {
207 207
       SET_INPUT_PULLUP(BTN_ENC);
208 208
     #endif
209 209
 
210
-    #if ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(ADC_KEYPAD)
211
-      SET_OUTPUT(SHIFT_CLK);
212
-      OUT_WRITE(SHIFT_LD, HIGH);
213
-      SET_INPUT_PULLUP(SHIFT_OUT);
214
-    #endif
215
-
216 210
     #if BUTTON_EXISTS(UP)
217 211
       SET_INPUT(BTN_UP);
218 212
     #endif
@@ -226,19 +220,27 @@ void MarlinUI::init() {
226 220
       SET_INPUT(BTN_RT);
227 221
     #endif
228 222
 
229
-  #else // !HAS_DIGITAL_BUTTONS
223
+  #endif // !HAS_DIGITAL_BUTTONS
224
+
225
+  #if HAS_SHIFT_ENCODER
230 226
 
231 227
     #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register
228
+
232 229
       SET_OUTPUT(SR_DATA_PIN);
233 230
       SET_OUTPUT(SR_CLK_PIN);
231
+
234 232
     #elif defined(SHIFT_CLK)
233
+
235 234
       SET_OUTPUT(SHIFT_CLK);
236 235
       OUT_WRITE(SHIFT_LD, HIGH);
237
-      OUT_WRITE(SHIFT_EN, LOW);
236
+      #if defined(SHIFT_EN) && SHIFT_EN >= 0
237
+        OUT_WRITE(SHIFT_EN, LOW);
238
+      #endif
238 239
       SET_INPUT_PULLUP(SHIFT_OUT);
239
-    #endif // SR_LCD_2W_NL
240 240
 
241
-  #endif // !HAS_DIGITAL_BUTTONS
241
+    #endif
242
+
243
+  #endif // HAS_SHIFT_ENCODER
242 244
 
243 245
   #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
244 246
     SET_INPUT_PULLUP(SD_DETECT_PIN);
@@ -273,9 +275,9 @@ bool MarlinUI::get_blink() {
273 275
 
274 276
 #if ENABLED(REPRAPWORLD_KEYPAD) && HAS_ENCODER_ACTION
275 277
 
276
-  volatile uint8_t MarlinUI::buttons_reprapworld_keypad;
278
+  volatile uint8_t MarlinUI::keypad_buttons;
277 279
 
278
-  #if DISABLED(ADC_KEYPAD) && HAS_LCD_MENU
280
+  #if HAS_LCD_MENU && !HAS_ADC_BUTTONS
279 281
 
280 282
     void lcd_move_x();
281 283
     void lcd_move_y();
@@ -296,10 +298,10 @@ bool MarlinUI::get_blink() {
296 298
 
297 299
   bool MarlinUI::handle_keypad() {
298 300
 
299
-    #if ENABLED(ADC_KEYPAD)
301
+    #if HAS_ADC_BUTTONS
300 302
 
301 303
       #define ADC_MIN_KEY_DELAY 100
302
-      if (buttons_reprapworld_keypad) {
304
+      if (keypad_buttons) {
303 305
         #if HAS_ENCODER_ACTION
304 306
           refresh(LCDVIEW_REDRAW_NOW);
305 307
           if (encoderDirection == -1) { // side effect which signals we are inside a menu
@@ -310,15 +312,16 @@ bool MarlinUI::get_blink() {
310 312
               else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))  { return_to_status(); quick_feedback(); }
311 313
             #endif
312 314
           }
313
-          else if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))     encoderPosition += ENCODER_PULSES_PER_STEP;
314
-          else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))       encoderPosition -= ENCODER_PULSES_PER_STEP;
315
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))     encoderPosition -= ENCODER_PULSES_PER_STEP;
316
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))       encoderPosition += ENCODER_PULSES_PER_STEP;
317
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_LEFT))     { MenuItem_back::action(); quick_feedback(); }
315 318
           else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))    encoderPosition = 0;
316 319
         #endif
317 320
         next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
318 321
         return true;
319 322
       }
320 323
 
321
-    #else // !ADC_KEYPAD
324
+    #else // !HAS_ADC_BUTTONS
322 325
 
323 326
       static uint8_t keypad_debounce = 0;
324 327
 
@@ -408,7 +411,9 @@ void MarlinUI::status_screen() {
408 411
     // share the same line on the display.
409 412
     //
410 413
 
411
-    millis_t ms = millis();
414
+    #if DISABLED(PROGRESS_MSG_ONCE) || (PROGRESS_MSG_EXPIRE > 0)
415
+      millis_t ms = millis();
416
+    #endif
412 417
 
413 418
     // If the message will blink rather than expire...
414 419
     #if DISABLED(PROGRESS_MSG_ONCE)
@@ -818,8 +823,8 @@ void MarlinUI::update() {
818 823
           break;
819 824
       } // switch
820 825
 
821
-      #if ENABLED(ADC_KEYPAD)
822
-        buttons_reprapworld_keypad = 0;
826
+      #if HAS_ADC_BUTTONS
827
+        keypad_buttons = 0;
823 828
       #endif
824 829
 
825 830
       #if HAS_GRAPHICAL_LCD
@@ -890,7 +895,7 @@ void MarlinUI::update() {
890 895
   } // ELAPSED(ms, next_lcd_update_ms)
891 896
 }
892 897
 
893
-#if ENABLED(ADC_KEYPAD)
898
+#if HAS_ADC_BUTTONS
894 899
 
895 900
   typedef struct {
896 901
     uint16_t ADCKeyValueMin, ADCKeyValueMax;
@@ -953,30 +958,38 @@ void MarlinUI::update() {
953 958
    * Warning: This function is called from interrupt context!
954 959
    */
955 960
   void MarlinUI::update_buttons() {
956
-    static uint8_t lastEncoderBits;
957 961
     const millis_t now = millis();
958 962
     if (ELAPSED(now, next_button_update_ms)) {
959 963
 
960 964
       #if HAS_DIGITAL_BUTTONS
961
-        uint8_t newbutton = 0;
962 965
 
963
-        #if BUTTON_EXISTS(EN1)
964
-          if (BUTTON_PRESSED(EN1)) newbutton |= EN_A;
965
-        #endif
966
-        #if BUTTON_EXISTS(EN2)
967
-          if (BUTTON_PRESSED(EN2)) newbutton |= EN_B;
968
-        #endif
969
-        #if BUTTON_EXISTS(ENC)
970
-          if (BUTTON_PRESSED(ENC)) newbutton |= EN_C;
971
-        #endif
972
-        #if BUTTON_EXISTS(BACK)
973
-          if (BUTTON_PRESSED(BACK)) newbutton |= EN_D;
966
+        #if BUTTON_EXISTS(EN1) || BUTTON_EXISTS(EN2) || BUTTON_EXISTS(ENC) || BUTTON_EXISTS(BACK)
967
+
968
+          uint8_t newbutton = 0;
969
+
970
+          #if BUTTON_EXISTS(EN1)
971
+            if (BUTTON_PRESSED(EN1)) newbutton |= EN_A;
972
+          #endif
973
+          #if BUTTON_EXISTS(EN2)
974
+            if (BUTTON_PRESSED(EN2)) newbutton |= EN_B;
975
+          #endif
976
+          #if BUTTON_EXISTS(ENC)
977
+            if (BUTTON_PRESSED(ENC)) newbutton |= EN_C;
978
+          #endif
979
+          #if BUTTON_EXISTS(BACK)
980
+            if (BUTTON_PRESSED(BACK)) newbutton |= EN_D;
981
+          #endif
982
+
983
+        #else
984
+
985
+          constexpr uint8_t newbutton = 0;
986
+
974 987
         #endif
975 988
 
976 989
         //
977 990
         // Directional buttons
978 991
         //
979
-        #if LCD_HAS_DIRECTIONAL_BUTTONS
992
+        #if BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT)
980 993
 
981 994
           const int8_t pulses = (ENCODER_PULSES_PER_STEP) * encoderDirection;
982 995
 
@@ -1008,40 +1021,40 @@ void MarlinUI::update() {
1008 1021
             }
1009 1022
           #endif
1010 1023
 
1011
-        #endif // LCD_HAS_DIRECTIONAL_BUTTONS
1024
+        #endif // UP || DWN || LFT || RT
1012 1025
 
1013
-        #if ENABLED(ADC_KEYPAD)
1026
+        buttons = newbutton
1027
+          #if ENABLED(LCD_HAS_SLOW_BUTTONS)
1028
+            | slow_buttons
1029
+          #endif
1030
+        ;
1014 1031
 
1015
-          buttons = 0;
1016
-          if (buttons_reprapworld_keypad == 0) {
1017
-            uint8_t newbutton_reprapworld_keypad = get_ADC_keyValue();
1018
-            if (WITHIN(newbutton_reprapworld_keypad, 1, 8))
1019
-              buttons_reprapworld_keypad = _BV(newbutton_reprapworld_keypad - 1);
1020
-          }
1032
+      #elif HAS_ADC_BUTTONS
1021 1033
 
1022
-        #else
1034
+        buttons = 0;
1035
+        if (keypad_buttons == 0) {
1036
+          const uint8_t b = get_ADC_keyValue();
1037
+          if (WITHIN(b, 1, 8)) keypad_buttons = _BV(b - 1);
1038
+        }
1023 1039
 
1024
-          buttons = newbutton
1025
-            #if ENABLED(LCD_HAS_SLOW_BUTTONS)
1026
-              | slow_buttons
1027
-            #endif
1028
-          ;
1040
+      #endif
1041
+
1042
+      #if HAS_SHIFT_ENCODER
1029 1043
 
1044
+        GET_SHIFT_BUTTON_STATES(
1030 1045
           #if ENABLED(REPRAPWORLD_KEYPAD)
1031
-            GET_SHIFT_BUTTON_STATES(buttons_reprapworld_keypad);
1046
+            keypad_buttons
1047
+          #else
1048
+            buttons
1032 1049
           #endif
1033
-
1034
-        #endif
1035
-
1036
-      #else // !HAS_DIGITAL_BUTTONS
1037
-
1038
-        GET_SHIFT_BUTTON_STATES(buttons);
1050
+        );
1039 1051
 
1040 1052
       #endif
1041 1053
 
1042 1054
     } // next_button_update_ms
1043 1055
 
1044 1056
     #if HAS_ENCODER_WHEEL
1057
+      static uint8_t lastEncoderBits;
1045 1058
 
1046 1059
       #define encrot0 0
1047 1060
       #define encrot1 2

+ 28
- 23
Marlin/src/lcd/ultralcd.h Datei anzeigen

@@ -46,7 +46,7 @@
46 46
     LCDVIEW_CALL_NO_REDRAW
47 47
   };
48 48
 
49
-  #if ENABLED(ADC_KEYPAD)
49
+  #if HAS_ADC_BUTTONS
50 50
     uint8_t get_ADC_keyValue();
51 51
   #endif
52 52
 
@@ -88,6 +88,30 @@
88 88
 
89 89
 #endif
90 90
 
91
+#if ENABLED(REPRAPWORLD_KEYPAD)
92
+  #define REPRAPWORLD_BTN_OFFSET          0 // Bit offset into buttons for shift register values
93
+
94
+  #define BLEN_REPRAPWORLD_KEYPAD_F3      0
95
+  #define BLEN_REPRAPWORLD_KEYPAD_F2      1
96
+  #define BLEN_REPRAPWORLD_KEYPAD_F1      2
97
+  #define BLEN_REPRAPWORLD_KEYPAD_DOWN    3
98
+  #define BLEN_REPRAPWORLD_KEYPAD_RIGHT   4
99
+  #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE  5
100
+  #define BLEN_REPRAPWORLD_KEYPAD_UP      6
101
+  #define BLEN_REPRAPWORLD_KEYPAD_LEFT    7
102
+
103
+  #define EN_REPRAPWORLD_KEYPAD_F1        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F1))
104
+  #define EN_REPRAPWORLD_KEYPAD_F2        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F2))
105
+  #define EN_REPRAPWORLD_KEYPAD_F3        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F3))
106
+  #define EN_REPRAPWORLD_KEYPAD_DOWN      (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_DOWN))
107
+  #define EN_REPRAPWORLD_KEYPAD_RIGHT     (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_RIGHT))
108
+  #define EN_REPRAPWORLD_KEYPAD_MIDDLE    (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
109
+  #define EN_REPRAPWORLD_KEYPAD_UP        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_UP))
110
+  #define EN_REPRAPWORLD_KEYPAD_LEFT      (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_LEFT))
111
+
112
+  #define RRK(B) (keypad_buttons & (B))
113
+#endif
114
+
91 115
 #if HAS_DIGITAL_BUTTONS
92 116
 
93 117
   // Wheel spin pins where BA is 00, 10, 11, 01 (1 bit always changes)
@@ -112,27 +136,6 @@
112 136
   #endif
113 137
 
114 138
   #if ENABLED(REPRAPWORLD_KEYPAD)
115
-    #define REPRAPWORLD_BTN_OFFSET          0 // Bit offset into buttons for shift register values
116
-
117
-    #define BLEN_REPRAPWORLD_KEYPAD_F3      0
118
-    #define BLEN_REPRAPWORLD_KEYPAD_F2      1
119
-    #define BLEN_REPRAPWORLD_KEYPAD_F1      2
120
-    #define BLEN_REPRAPWORLD_KEYPAD_DOWN    3
121
-    #define BLEN_REPRAPWORLD_KEYPAD_RIGHT   4
122
-    #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE  5
123
-    #define BLEN_REPRAPWORLD_KEYPAD_UP      6
124
-    #define BLEN_REPRAPWORLD_KEYPAD_LEFT    7
125
-
126
-    #define EN_REPRAPWORLD_KEYPAD_F1        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F1))
127
-    #define EN_REPRAPWORLD_KEYPAD_F2        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F2))
128
-    #define EN_REPRAPWORLD_KEYPAD_F3        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F3))
129
-    #define EN_REPRAPWORLD_KEYPAD_DOWN      (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_DOWN))
130
-    #define EN_REPRAPWORLD_KEYPAD_RIGHT     (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_RIGHT))
131
-    #define EN_REPRAPWORLD_KEYPAD_MIDDLE    (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
132
-    #define EN_REPRAPWORLD_KEYPAD_UP        (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_UP))
133
-    #define EN_REPRAPWORLD_KEYPAD_LEFT      (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_LEFT))
134
-
135
-    #define RRK(B) (buttons_reprapworld_keypad & (B))
136 139
 
137 140
     #ifdef EN_C
138 141
       #define BUTTON_CLICK() ((buttons & EN_C) || RRK(EN_REPRAPWORLD_KEYPAD_MIDDLE))
@@ -180,6 +183,8 @@
180 183
 
181 184
 #else
182 185
 
186
+  #define BUTTON_EXISTS(BN) 0
187
+
183 188
   // Shift register bits correspond to buttons:
184 189
   #define BL_LE 7   // Left
185 190
   #define BL_UP 6   // Up
@@ -463,7 +468,7 @@ public:
463 468
 
464 469
     static volatile uint8_t buttons;
465 470
     #if ENABLED(REPRAPWORLD_KEYPAD)
466
-      static volatile uint8_t buttons_reprapworld_keypad;
471
+      static volatile uint8_t keypad_buttons;
467 472
       static bool handle_keypad();
468 473
     #endif
469 474
     #if ENABLED(LCD_HAS_SLOW_BUTTONS)

+ 3
- 3
Marlin/src/module/temperature.cpp Datei anzeigen

@@ -217,7 +217,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS];
217 217
   bool Temperature::heater_idle_timeout_exceeded[HOTENDS] = { false };
218 218
 #endif
219 219
 
220
-#if ENABLED(ADC_KEYPAD)
220
+#if HAS_ADC_BUTTONS
221 221
   uint32_t Temperature::current_ADCKey_raw = 0;
222 222
   uint8_t Temperature::ADCKey_count = 0;
223 223
 #endif
@@ -1869,7 +1869,7 @@ void Temperature::isr() {
1869 1869
   // avoid multiple loads of pwm_count
1870 1870
   uint8_t pwm_count_tmp = pwm_count;
1871 1871
 
1872
-  #if ENABLED(ADC_KEYPAD)
1872
+  #if HAS_ADC_BUTTONS
1873 1873
     static unsigned int raw_ADCKey_value = 0;
1874 1874
   #endif
1875 1875
 
@@ -2290,7 +2290,7 @@ void Temperature::isr() {
2290 2290
       break;
2291 2291
     #endif
2292 2292
 
2293
-    #if ENABLED(ADC_KEYPAD)
2293
+    #if HAS_ADC_BUTTONS
2294 2294
       case Prepare_ADC_KEY:
2295 2295
         HAL_START_ADC(ADC_KEYPAD_PIN);
2296 2296
         break;

+ 2
- 2
Marlin/src/module/temperature.h Datei anzeigen

@@ -112,7 +112,7 @@ enum ADCSensorState : char {
112 112
     Prepare_FILWIDTH,
113 113
     Measure_FILWIDTH,
114 114
   #endif
115
-  #if ENABLED(ADC_KEYPAD)
115
+  #if HAS_ADC_BUTTONS
116 116
     Prepare_ADC_KEY,
117 117
     Measure_ADC_KEY,
118 118
   #endif
@@ -291,7 +291,7 @@ class Temperature {
291 291
     #endif
292 292
 
293 293
   public:
294
-    #if ENABLED(ADC_KEYPAD)
294
+    #if HAS_ADC_BUTTONS
295 295
       static uint32_t current_ADCKey_raw;
296 296
       static uint8_t ADCKey_count;
297 297
     #endif

+ 0
- 3
Marlin/src/pins/pins_ANET_10.h Datei anzeigen

@@ -161,9 +161,6 @@
161 161
     #define LCD_PINS_D5      11
162 162
     #define LCD_PINS_D6      16
163 163
     #define LCD_PINS_D7      17
164
-    #define BTN_EN1          -1
165
-    #define BTN_EN2          -1
166
-    #define BTN_ENC          -1
167 164
     #define ADC_KEYPAD_PIN    1
168 165
   #elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) || ENABLED(ANET_FULL_GRAPHICS_LCD)
169 166
     // Pin definitions for the Anet A6 Full Graphics display and the RepRapDiscount Full Graphics

Laden…
Abbrechen
Speichern