Kaynağa Gözat

Fix LCD compile error, etc. (#12472)

Ludy 6 yıl önce
ebeveyn
işleme
1f93d2bcf7

+ 5
- 4
Marlin/src/inc/Conditionals_LCD.h Dosyayı Görüntüle

26
  * Conditionals that need to be set before Configuration_adv.h or pins.h
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
 #if ENABLED(CARTESIO_UI)
29
 #if ENABLED(CARTESIO_UI)
32
 
30
 
33
   #define DOGLCD
31
   #define DOGLCD
305
 #define HAS_GRAPHICAL_LCD    ENABLED(DOGLCD)
303
 #define HAS_GRAPHICAL_LCD    ENABLED(DOGLCD)
306
 #define HAS_CHARACTER_LCD   (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD)
304
 #define HAS_CHARACTER_LCD   (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD)
307
 #define HAS_LCD_MENU        (ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS))
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
 #if HAS_GRAPHICAL_LCD
312
 #if HAS_GRAPHICAL_LCD
312
   /**
313
   /**

+ 81
- 86
Marlin/src/lcd/HD44780/lcdprint_hd44780.cpp Dosyayı Görüntüle

28
   #define LCD_CLASS LiquidCrystal
28
   #define LCD_CLASS LiquidCrystal
29
 #endif
29
 #endif
30
 extern LCD_CLASS lcd;
30
 extern LCD_CLASS lcd;
31
-LCD_CLASS *plcd = &lcd;
32
 
31
 
33
 int lcd_glyph_height(void) { return 1; }
32
 int lcd_glyph_height(void) { return 1; }
34
 
33
 
868
 
867
 
869
 /* return v1 - v2 */
868
 /* return v1 - v2 */
870
 static int hd44780_charmap_compare(hd44780_charmap_t * v1, hd44780_charmap_t * v2) {
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
 static int pf_bsearch_cb_comp_hd4map_pgm(void *userdata, size_t idx, void * data_pin) {
873
 static int pf_bsearch_cb_comp_hd4map_pgm(void *userdata, size_t idx, void * data_pin) {
882
   return hd44780_charmap_compare(&localval, (hd44780_charmap_t *)data_pin);
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
 // return < 0 on error
884
 // return < 0 on error
964
 // return the advanced cols
885
 // return the advanced cols
976
 
897
 
977
   // TODO: fix the '\\' that doesnt exist in the HD44870
898
   // TODO: fix the '\\' that doesnt exist in the HD44870
978
   if (c < 128) {
899
   if (c < 128) {
979
-    plcd->write((uint8_t)c);
900
+    lcd.write((uint8_t)c);
980
     return 1;
901
     return 1;
981
   }
902
   }
982
   copy_address = NULL;
903
   copy_address = NULL;
993
     hd44780_charmap_t localval;
914
     hd44780_charmap_t localval;
994
     // found
915
     // found
995
     memcpy_P(&localval, copy_address, sizeof(localval));
916
     memcpy_P(&localval, copy_address, sizeof(localval));
996
-    plcd->write(localval.idx);
917
+    lcd.write(localval.idx);
997
     if (max_length >= 2 && localval.idx2 > 0) {
918
     if (max_length >= 2 && localval.idx2 > 0) {
998
-      plcd->write(localval.idx2);
919
+      lcd.write(localval.idx2);
999
       return 2;
920
       return 2;
1000
     }
921
     }
1001
     return 1;
922
     return 1;
1002
   }
923
   }
1003
 
924
 
1004
   // Not found, print '?' instead
925
   // Not found, print '?' instead
1005
-  plcd->write((uint8_t)'?');
926
+  lcd.write((uint8_t)'?');
1006
   return 1;
927
   return 1;
1007
 }
928
 }
1008
 
929
 
1037
   return lcd_put_u8str_max_cb(utf8_str_P, read_byte_rom, max_length);
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
 #endif // HAS_CHARACTER_LCD
1035
 #endif // HAS_CHARACTER_LCD

+ 1
- 1
Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp Dosyayı Görüntüle

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

+ 4
- 6
Marlin/src/lcd/dogm/lcdprint_u8g.cpp Dosyayı Görüntüle

23
 #include "u8g_fontutf8.h"
23
 #include "u8g_fontutf8.h"
24
 #include "../lcdprint.h"
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
 // return < 0 on error
32
 // return < 0 on error
35
 // return the advanced pixels
33
 // return the advanced pixels

+ 1
- 1
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp Dosyayı Görüntüle

21
  */
21
  */
22
 
22
 
23
 /**
23
 /**
24
- * ultralcd_impl_DOGM.cpp
24
+ * ultralcd_DOGM.cpp
25
  *
25
  *
26
  * Implementation of the LCD display routines for a DOGM128 graphic display.
26
  * Implementation of the LCD display routines for a DOGM128 graphic display.
27
  * by STB for ErikZalm/Marlin. Common LCD 128x64 pixel graphic displays.
27
  * by STB for ErikZalm/Marlin. Common LCD 128x64 pixel graphic displays.

+ 1
- 1
Marlin/src/lcd/dogm/ultralcd_DOGM.h Dosyayı Görüntüle

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

+ 4
- 2
Marlin/src/lcd/lcdprint.h Dosyayı Görüntüle

48
  */
48
  */
49
 int lcd_put_u8str_max_P(PGM_P utf8_str_P, pixel_len_t max_length);
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
 inline int lcd_put_u8str_P(PGM_P str) { return lcd_put_u8str_max_P(str, PIXEL_LEN_NOLIMIT); }
55
 inline int lcd_put_u8str_P(PGM_P str) { return lcd_put_u8str_max_P(str, PIXEL_LEN_NOLIMIT); }
54
 
56
 
55
 inline int lcd_put_u8str(const char* str) { return lcd_put_u8str_max(str, PIXEL_LEN_NOLIMIT); }
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 Dosyayı Görüntüle

66
     ui.encoderPosition = 0;
66
     ui.encoderPosition = 0;
67
     draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
67
     draw_menu_item_static(0, PSTR(MSG_PROGRESS_BAR_TEST), true, true);
68
     lcd_moveto((LCD_WIDTH) / 2 - 2, LCD_HEIGHT - 2);
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
     lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
70
     lcd_moveto(0, LCD_HEIGHT - 1); ui.draw_progress_bar(bar_percent);
71
   }
71
   }
72
 
72
 

+ 69
- 56
Marlin/src/lcd/ultralcd.cpp Dosyayı Görüntüle

207
       SET_INPUT_PULLUP(BTN_ENC);
207
       SET_INPUT_PULLUP(BTN_ENC);
208
     #endif
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
     #if BUTTON_EXISTS(UP)
210
     #if BUTTON_EXISTS(UP)
217
       SET_INPUT(BTN_UP);
211
       SET_INPUT(BTN_UP);
218
     #endif
212
     #endif
226
       SET_INPUT(BTN_RT);
220
       SET_INPUT(BTN_RT);
227
     #endif
221
     #endif
228
 
222
 
229
-  #else // !HAS_DIGITAL_BUTTONS
223
+  #endif // !HAS_DIGITAL_BUTTONS
224
+
225
+  #if HAS_SHIFT_ENCODER
230
 
226
 
231
     #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register
227
     #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register
228
+
232
       SET_OUTPUT(SR_DATA_PIN);
229
       SET_OUTPUT(SR_DATA_PIN);
233
       SET_OUTPUT(SR_CLK_PIN);
230
       SET_OUTPUT(SR_CLK_PIN);
231
+
234
     #elif defined(SHIFT_CLK)
232
     #elif defined(SHIFT_CLK)
233
+
235
       SET_OUTPUT(SHIFT_CLK);
234
       SET_OUTPUT(SHIFT_CLK);
236
       OUT_WRITE(SHIFT_LD, HIGH);
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
       SET_INPUT_PULLUP(SHIFT_OUT);
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
   #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
245
   #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
244
     SET_INPUT_PULLUP(SD_DETECT_PIN);
246
     SET_INPUT_PULLUP(SD_DETECT_PIN);
273
 
275
 
274
 #if ENABLED(REPRAPWORLD_KEYPAD) && HAS_ENCODER_ACTION
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
     void lcd_move_x();
282
     void lcd_move_x();
281
     void lcd_move_y();
283
     void lcd_move_y();
296
 
298
 
297
   bool MarlinUI::handle_keypad() {
299
   bool MarlinUI::handle_keypad() {
298
 
300
 
299
-    #if ENABLED(ADC_KEYPAD)
301
+    #if HAS_ADC_BUTTONS
300
 
302
 
301
       #define ADC_MIN_KEY_DELAY 100
303
       #define ADC_MIN_KEY_DELAY 100
302
-      if (buttons_reprapworld_keypad) {
304
+      if (keypad_buttons) {
303
         #if HAS_ENCODER_ACTION
305
         #if HAS_ENCODER_ACTION
304
           refresh(LCDVIEW_REDRAW_NOW);
306
           refresh(LCDVIEW_REDRAW_NOW);
305
           if (encoderDirection == -1) { // side effect which signals we are inside a menu
307
           if (encoderDirection == -1) { // side effect which signals we are inside a menu
310
               else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))  { return_to_status(); quick_feedback(); }
312
               else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))  { return_to_status(); quick_feedback(); }
311
             #endif
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
           else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))    encoderPosition = 0;
318
           else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))    encoderPosition = 0;
316
         #endif
319
         #endif
317
         next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
320
         next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
318
         return true;
321
         return true;
319
       }
322
       }
320
 
323
 
321
-    #else // !ADC_KEYPAD
324
+    #else // !HAS_ADC_BUTTONS
322
 
325
 
323
       static uint8_t keypad_debounce = 0;
326
       static uint8_t keypad_debounce = 0;
324
 
327
 
408
     // share the same line on the display.
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
     // If the message will blink rather than expire...
418
     // If the message will blink rather than expire...
414
     #if DISABLED(PROGRESS_MSG_ONCE)
419
     #if DISABLED(PROGRESS_MSG_ONCE)
818
           break;
823
           break;
819
       } // switch
824
       } // switch
820
 
825
 
821
-      #if ENABLED(ADC_KEYPAD)
822
-        buttons_reprapworld_keypad = 0;
826
+      #if HAS_ADC_BUTTONS
827
+        keypad_buttons = 0;
823
       #endif
828
       #endif
824
 
829
 
825
       #if HAS_GRAPHICAL_LCD
830
       #if HAS_GRAPHICAL_LCD
890
   } // ELAPSED(ms, next_lcd_update_ms)
895
   } // ELAPSED(ms, next_lcd_update_ms)
891
 }
896
 }
892
 
897
 
893
-#if ENABLED(ADC_KEYPAD)
898
+#if HAS_ADC_BUTTONS
894
 
899
 
895
   typedef struct {
900
   typedef struct {
896
     uint16_t ADCKeyValueMin, ADCKeyValueMax;
901
     uint16_t ADCKeyValueMin, ADCKeyValueMax;
953
    * Warning: This function is called from interrupt context!
958
    * Warning: This function is called from interrupt context!
954
    */
959
    */
955
   void MarlinUI::update_buttons() {
960
   void MarlinUI::update_buttons() {
956
-    static uint8_t lastEncoderBits;
957
     const millis_t now = millis();
961
     const millis_t now = millis();
958
     if (ELAPSED(now, next_button_update_ms)) {
962
     if (ELAPSED(now, next_button_update_ms)) {
959
 
963
 
960
       #if HAS_DIGITAL_BUTTONS
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
         #endif
987
         #endif
975
 
988
 
976
         //
989
         //
977
         // Directional buttons
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
           const int8_t pulses = (ENCODER_PULSES_PER_STEP) * encoderDirection;
994
           const int8_t pulses = (ENCODER_PULSES_PER_STEP) * encoderDirection;
982
 
995
 
1008
             }
1021
             }
1009
           #endif
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
           #if ENABLED(REPRAPWORLD_KEYPAD)
1045
           #if ENABLED(REPRAPWORLD_KEYPAD)
1031
-            GET_SHIFT_BUTTON_STATES(buttons_reprapworld_keypad);
1046
+            keypad_buttons
1047
+          #else
1048
+            buttons
1032
           #endif
1049
           #endif
1033
-
1034
-        #endif
1035
-
1036
-      #else // !HAS_DIGITAL_BUTTONS
1037
-
1038
-        GET_SHIFT_BUTTON_STATES(buttons);
1050
+        );
1039
 
1051
 
1040
       #endif
1052
       #endif
1041
 
1053
 
1042
     } // next_button_update_ms
1054
     } // next_button_update_ms
1043
 
1055
 
1044
     #if HAS_ENCODER_WHEEL
1056
     #if HAS_ENCODER_WHEEL
1057
+      static uint8_t lastEncoderBits;
1045
 
1058
 
1046
       #define encrot0 0
1059
       #define encrot0 0
1047
       #define encrot1 2
1060
       #define encrot1 2

+ 28
- 23
Marlin/src/lcd/ultralcd.h Dosyayı Görüntüle

46
     LCDVIEW_CALL_NO_REDRAW
46
     LCDVIEW_CALL_NO_REDRAW
47
   };
47
   };
48
 
48
 
49
-  #if ENABLED(ADC_KEYPAD)
49
+  #if HAS_ADC_BUTTONS
50
     uint8_t get_ADC_keyValue();
50
     uint8_t get_ADC_keyValue();
51
   #endif
51
   #endif
52
 
52
 
88
 
88
 
89
 #endif
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
 #if HAS_DIGITAL_BUTTONS
115
 #if HAS_DIGITAL_BUTTONS
92
 
116
 
93
   // Wheel spin pins where BA is 00, 10, 11, 01 (1 bit always changes)
117
   // Wheel spin pins where BA is 00, 10, 11, 01 (1 bit always changes)
112
   #endif
136
   #endif
113
 
137
 
114
   #if ENABLED(REPRAPWORLD_KEYPAD)
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
     #ifdef EN_C
140
     #ifdef EN_C
138
       #define BUTTON_CLICK() ((buttons & EN_C) || RRK(EN_REPRAPWORLD_KEYPAD_MIDDLE))
141
       #define BUTTON_CLICK() ((buttons & EN_C) || RRK(EN_REPRAPWORLD_KEYPAD_MIDDLE))
180
 
183
 
181
 #else
184
 #else
182
 
185
 
186
+  #define BUTTON_EXISTS(BN) 0
187
+
183
   // Shift register bits correspond to buttons:
188
   // Shift register bits correspond to buttons:
184
   #define BL_LE 7   // Left
189
   #define BL_LE 7   // Left
185
   #define BL_UP 6   // Up
190
   #define BL_UP 6   // Up
463
 
468
 
464
     static volatile uint8_t buttons;
469
     static volatile uint8_t buttons;
465
     #if ENABLED(REPRAPWORLD_KEYPAD)
470
     #if ENABLED(REPRAPWORLD_KEYPAD)
466
-      static volatile uint8_t buttons_reprapworld_keypad;
471
+      static volatile uint8_t keypad_buttons;
467
       static bool handle_keypad();
472
       static bool handle_keypad();
468
     #endif
473
     #endif
469
     #if ENABLED(LCD_HAS_SLOW_BUTTONS)
474
     #if ENABLED(LCD_HAS_SLOW_BUTTONS)

+ 3
- 3
Marlin/src/module/temperature.cpp Dosyayı Görüntüle

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

+ 2
- 2
Marlin/src/module/temperature.h Dosyayı Görüntüle

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

+ 0
- 3
Marlin/src/pins/pins_ANET_10.h Dosyayı Görüntüle

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

Loading…
İptal
Kaydet