MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.14k stars 19.2k forks source link

Feature request: add suppport for reprapworld keypad #1142

Closed vanhooren closed 9 years ago

vanhooren commented 9 years ago

I can't seem to get the marlin firmware to compile when the following is selected motherboard 33 ''ramps"

#define REPRAPWORLD_KEYPAD
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

the firmware will compile when

Selecting both these will not compile in any marlin version i tested. I understand that there is some overlap in functionality between the reprap discount rotary encoder and the keypad rotary encoder perhaps this is the problem? Unfortunately I am not a programmer and between learning 3d modeling and learning about printing in general i doubt i will have time to delve into it in the next couple of weeks. I will do my best to understand the issues further. I was planning on doing vb.net evening courses but that is still a couple of months away.

When trying to compile with board set to 33 (ramps 1.4)

#define REPRAPWORLD_KEYPAD
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER uncommented

I get the following error log

ultralcd.cpp: In function 'void lcd_init()':
ultralcd.cpp:1176: error: 'SHIFT_CLK' was not declared in this scope
ultralcd.cpp:1177: error: 'SHIFT_LD' was not declared in this scope
ultralcd.cpp:1178: error: 'SHIFT_OUT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp: In function 'void lcd_update()':
ultralcd.cpp:1249: error: 'BLEN_REPRAPWORLD_KEYPAD_F2' was not declared in this scope
ultralcd.cpp:1252: error: 'BLEN_REPRAPWORLD_KEYPAD_F3' was not declared in this scope
ultralcd.cpp:1255: error: 'BLEN_REPRAPWORLD_KEYPAD_LEFT' was not declared in this scope
ultralcd.cpp:1258: error: 'BLEN_REPRAPWORLD_KEYPAD_RIGHT' was not declared in this scope
ultralcd.cpp:1261: error: 'BLEN_REPRAPWORLD_KEYPAD_DOWN' was not declared in this scope
ultralcd.cpp:1264: error: 'BLEN_REPRAPWORLD_KEYPAD_UP' was not declared in this scope
ultralcd.cpp:1267: error: 'BLEN_REPRAPWORLD_KEYPAD_MIDDLE' was not declared in this scope
ultralcd.cpp: In function 'void lcd_buttons_update()':
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1376: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope
ultralcd.cpp:1376: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope

when compiling with only the #define REPRAPWORLD_KEYPAD uncommented i get the this error

In file included from ultralcd.cpp:38:
ultralcd_implementation_hitachi_HD44780.h:12: error: conflicting declaration 'volatile uint16_t buttons'
ultralcd.h:30: error: 'buttons' has a previous declaration as 'volatile uint8_t buttons'

compiling with only the full graphics controller has always worked fine

If i missed something bleedingly obvious i am sorry for wasting time

I have found issues that debate a similar problem but found no solution that could be applied to my exact situation

irun4fundotca commented 9 years ago

​i just used this line and the full features work fine

define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

On Wed, Nov 12, 2014 at 10:44 AM, vanhooren notifications@github.com wrote:

I can't seem to get the marlin firmware to compile when the following is selected motherboard 33 ''ramps"

define REPRAPWORLD_KEYPAD

define REPRAP_DISCOUNT_SMART_CONTROLLER

the firmware will compile when A. I only select the discount controller B. I only select the keypad but only in the older marlin version I used not in the newest version.

Selecting both these will not compile in any marlin version i tested. I understand that there is some overlap in functionality between the reprap discount rotary encoder and the keypad rotary encoder perhaps this is the problem? Unfortunately I am not a programmer and between learning 3d modeling and learning about printing in general i doubt i will have time to delve into it in the next couple of weeks. I will do my best to understand the issues further. I was planning on doing vb.net evening courses but that is still a couple of months away.

When trying to compile with board set to 33 (ramps 1.4)

define REPRAPWORLD_KEYPAD

define REPRAP_DISCOUNT_SMART_CONTROLLER uncommented

i get the following error log

ultralcd.cpp: In function 'void lcd_init()': ultralcd.cpp:1176: error: 'SHIFT_CLK' was not declared in this scope ultralcd.cpp:1177: error: 'SHIFT_LD' was not declared in this scope ultralcd.cpp:1178: error: 'SHIFT_OUT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope ultralcd.cpp:1179: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1180: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp: In function 'void lcd_update()': ultralcd.cpp:1249: error: 'BLEN_REPRAPWORLD_KEYPAD_F2' was not declared in this scope ultralcd.cpp:1252: error: 'BLEN_REPRAPWORLD_KEYPAD_F3' was not declared in this scope ultralcd.cpp:1255: error: 'BLEN_REPRAPWORLD_KEYPAD_LEFT' was not declared in this scope ultralcd.cpp:1258: error: 'BLEN_REPRAPWORLD_KEYPAD_RIGHT' was not declared in this scope ultralcd.cpp:1261: error: 'BLEN_REPRAPWORLD_KEYPAD_DOWN' was not declared in this scope ultralcd.cpp:1264: error: 'BLEN_REPRAPWORLD_KEYPAD_UP' was not declared in this scope ultralcd.cpp:1267: error: 'BLEN_REPRAPWORLD_KEYPAD_MIDDLE' was not declared in this scope ultralcd.cpp: In function 'void lcd_buttons_update()': ultralcd.cpp:1372: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1372: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope ultralcd.cpp:1373: error: 'DIOSHIFT_LD_PIN' was not declared in this scope ultralcd.cpp:1376: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope ultralcd.cpp:1376: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1378: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope ultralcd.cpp:1379: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope

when compiling with only the #define REPRAPWORLD_KEYPAD uncommented i get the this error

In file included from ultralcd.cpp:38: ultralcd_implementation_hitachi_HD44780.h:12: error: conflicting declaration 'volatile uint16_t buttons' ultralcd.h:30: error: 'buttons' has a previous declaration as 'volatile uint8_t buttons'

compiling with only the full graphics controller has always worked fine

If i missed something bleedingly obvious i am sorry for wasting time

— Reply to this email directly or view it on GitHub https://github.com/ErikZalm/Marlin/issues/1142.

vanhooren commented 9 years ago

OOPs copy pasted the wrong line. I edited the original post , the issue still stands though using only the #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER works great adding the reprapworld keypad is were the problems begin. could you try and replicate this error ? thanks for the fast reply and spotting my mistake in the post. I just tried compiling again to make sure i didn't make the same mistake in the configuration.h but unfortunately that wasn't the case

irun4fundotca commented 9 years ago

​i think i misunderstood your post about the keypad you are referring to this item? http://reprapworld.com/?products_details&products_id=202

I'm not sure how you use both the rotary dial and that together the one im referring too.. http://www.ebay.com/itm/190939842430

On Wed, Nov 12, 2014 at 12:10 PM, vanhooren notifications@github.com wrote:

OOPs copy pasted the wrong line. I edited the original post , the issue still stands though using only the #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER works great adding the reprapworld keypad is were the problems begin. could you try and replicate this error ? thanks for the fast reply and spotting my mistake in the post. I just tried compiling again to make sure i didn't make the same mistake in the configuration.h but unfortunately that wasn't the case

— Reply to this email directly or view it on GitHub https://github.com/ErikZalm/Marlin/issues/1142#issuecomment-62754056.

boelle commented 9 years ago

did you get the issue solved?

vanhooren commented 9 years ago

not yet but i haven't devoted much time to it either having no programming experience it's a bit of a leap. next year i'm starting evening courses programming and then I'd like to revisit this.

boelle commented 9 years ago

but the issue is still there even if you take a fresh copy of marlin?

vanhooren commented 9 years ago

Just downloaded the latest marlin version, set board to 33 (Ramps1.3-1.4) Uncommented

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

and

#define REPRAPWORLD_KEYPAD
#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0

these are the errors i get when trying to compile

ultralcd.cpp: In function 'void lcd_init()':
ultralcd.cpp:1068: error: 'SHIFT_CLK' was not declared in this scope
ultralcd.cpp:1069: error: 'SHIFT_LD' was not declared in this scope
ultralcd.cpp:1070: error: 'SHIFT_OUT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_WPORT' was not declared in this scope
ultralcd.cpp:1071: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1072: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp: In function 'void lcd_update()':
ultralcd.cpp:1141: error: 'BLEN_REPRAPWORLD_KEYPAD_F2' was not declared in this scope
ultralcd.cpp:1144: error: 'BLEN_REPRAPWORLD_KEYPAD_F3' was not declared in this scope
ultralcd.cpp:1147: error: 'BLEN_REPRAPWORLD_KEYPAD_LEFT' was not declared in this scope
ultralcd.cpp:1150: error: 'BLEN_REPRAPWORLD_KEYPAD_RIGHT' was not declared in this scope
ultralcd.cpp:1153: error: 'BLEN_REPRAPWORLD_KEYPAD_DOWN' was not declared in this scope
ultralcd.cpp:1156: error: 'BLEN_REPRAPWORLD_KEYPAD_UP' was not declared in this scope
ultralcd.cpp:1159: error: 'BLEN_REPRAPWORLD_KEYPAD_MIDDLE' was not declared in this scope
ultralcd.cpp: In function 'void lcd_buttons_update()':
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1286: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_RPORT' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_WPORT' was not declared in this scope
ultralcd.cpp:1287: error: 'DIOSHIFT_LD_PIN' was not declared in this scope
ultralcd.cpp:1290: error: 'DIOSHIFT_OUT_RPORT' was not declared in this scope
ultralcd.cpp:1290: error: 'DIOSHIFT_OUT_PIN' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1292: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_RPORT' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_WPORT' was not declared in this scope
ultralcd.cpp:1293: error: 'DIOSHIFT_CLK_PIN' was not declared in this scope
vanhooren commented 9 years ago

ucommenting #define REPRAP_DISCOUNT_SMART_CONTROLLER and

define REPRAPWORLD_KEYPAD gives a similar result

so do the combinations Keypad + #define RA_CONTROL_PANEL keypad + #define G3D_PANEL keypad + #define MAKRPANEL

the keypad does not play nice with its fellow accesories

I do wish to thank you for devoting precious time to this problem If next year i get a basis in programming i will try and devote my own time to Marlin Right now however I'm doing evening courses in Blender and Autocad. Again thank you for the effort you put into making marlin better.

stv0g commented 9 years ago

Just notes:

lordofhyphens commented 9 years ago

Stepping through the code, the line referenced is 1371.

WRITE(SHIFT_CLK,LOW);

Tons of preprocessor directives here, which ends up translating SHIFT_CLK to DIOSHIFT_CLK_PIN and DIOSHIFT_CLK_WPORT, which aren't defined.

As for BLEN_REPRAPWORLD_KEYPAD_F3 and related, there is a definition, but it's in a preprocessor elif. It looks like because REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER was defined in Configuration.h, the automatic expansion is pulling DOGLCD in there too, and the elifs ran by the preprocessor are expanding that one and not the keypad's. But the keypad is still defined, so the lcd update code uses it.

Removing the doglcd define from line 584 of Configuration.h clears the symptoms for that particular compile error, but I'm wondering if there's any misconfiguration here as well.

@vanhooren, do you have both the keypad and the full graphic controller? If you don't (and instead have a slightly different LCD), that may be your problem.

lordofhyphens commented 9 years ago

Yeah, it's all caused by defines. I think when you define both the controller and the keypad, the keypad defines get used in one part but not in another. This could be fixed by either having one completely override the other or merging the functions that the two define so there isn't a problem.

Another option would be to add more configuration so you could disable the input functions of the graphic controller. What a mess -.-;

Is having both of these items at the same time a common use case? Both compile in isolation, so I don't think there's any missing functionality.

vanhooren commented 9 years ago

I don't think having an lcd and the keypad is that common but neither is it ever going to be if this bug persists :). I don't lose any functionality, right know I just have to go through a lot of sub menus to for example level the build platform. Dedicated buttons would make things easier and faster. Now i just hook up the printer to the pc and control it with simplify3d or cura. It makes the setup less portable but I'm going to try using my nexus 7 to control the printer soon, so that should give me the dedicated buttons i want without the need to get this issue resolved.

I do have the full graphics controller and not a similar lcd.

Again thanks for all the valuable time put into this.

lordofhyphens commented 9 years ago

I think that entire area needs some refactoring to get some flexibility out of it. I can work on it, but it's going to take some time.

Additionally, I don't have any of the HW so it's going to be "fun" to breadboard up a mock to test this -.-;

I'm also investigating adding tests that can be kept with the source. No sense breaking things unknowingly if we don't have to.

boelle commented 9 years ago

you could always ask our testers to check your fork of marlin.. there are a few with a display..

also remember that each of these devices need their own CS line to the MCU... or they will clash when talking to the MCU.... the MCU pulls this CS line high when it wants to talk to a device... the only common are the data lines...

even if there is only one device it have an individual CS line

lordofhyphens commented 9 years ago

Thanks for the reminder. I tend to do a lot of short, iterative runs, so a really long feedback loop will probably produce poorer code.

My thought process at this point is to allow for two "slots" for controls, one for a LCD/button and another for just controls. If you're using more than one LCD at the same time, you should probably be writing your own support for it (as such as user knows more about what they want to do with multiple LCDs than we :D).

ErikZalm commented 9 years ago

The reprapworld keypad is something that we do not support. reprapworld made the keypad and did not work on the firmware side. They sell hardware and get a lot of money for it. They expect that others make the firmware. We do not make firmware for 1 specific type of hardware. reprapworld can add support and send a pull request. (That is how the other hardware developers do it)

If you have a reprapworld keypad, Ask reprapworld for support.

lordofhyphens commented 9 years ago

I was mostly thinking about refactoring that area so that there is an established way of handling 2 overlapping input devices. Right now anything that has buttons creates the same structure and assumes that the preprocessor will sort everything out.

Also who did write the support for the keypad? On Jan 16, 2015 12:55 PM, "Erik van der Zalm" notifications@github.com wrote:

The reprapworld keypad is something that we do not support. reprapworld made the keypad and did not work on the firmware side. They sell hardware and get a lot of money for it. They expect that others make the firmware. We do not make firmware for 1 specific type of hardware. reprapworld can add support and send a pull request. (That is how the other hardware developers do it)

If you have a reprapworld keypad, Ask reprapworld for support.

— Reply to this email directly or view it on GitHub https://github.com/MarlinFirmware/Marlin/issues/1142#issuecomment-70302894 .

lordofhyphens commented 9 years ago

Do we want to pull the existing support out of firmware until it is properly supported by the manufacturer? On Jan 16, 2015 1:02 PM, "Joseph Lenox" lenox.joseph@gmail.com wrote:

I was mostly thinking about refactoring that area so that there is an established way of handling 2 overlapping input devices. Right now anything that has buttons creates the same structure and assumes that the preprocessor will sort everything out.

Also who did write the support for the keypad? On Jan 16, 2015 12:55 PM, "Erik van der Zalm" notifications@github.com wrote:

The reprapworld keypad is something that we do not support. reprapworld made the keypad and did not work on the firmware side. They sell hardware and get a lot of money for it. They expect that others make the firmware. We do not make firmware for 1 specific type of hardware. reprapworld can add support and send a pull request. (That is how the other hardware developers do it)

If you have a reprapworld keypad, Ask reprapworld for support.

— Reply to this email directly or view it on GitHub https://github.com/MarlinFirmware/Marlin/issues/1142#issuecomment-70302894 .

ErikZalm commented 9 years ago

Unfortunate reprapworld keypad users. They start working on it and stopped.

And should not pull the existing support out. But we do not active maintain it. I think it is normal that a hardware developer also takes care of the firmware side. Reprapworld only wants to sell things, support is not something they do.

lordofhyphens commented 9 years ago

If we're not intending to do something about this, then we should close the issue and/or relabel it. At least take it out of the Bug Fixing milestone.

So, "not a bug"? Just a configuration that is currently known not to work?

vanhooren commented 9 years ago

To be fair I do believe the keypad works with the Reprapworld hardware (LCD, mini or megatronics and the keypad). The rerapworld website does state that this should work. I'll try and compile these options in the marlin version on their website.
EDIT : A very quick check makes me doubt that even with the megatronics board this is possible. The reprapworld website does mention connecting the keypad to ramps, and that is possible, just not in combination with any LCD what so ever making it kinda pointless. Anyway lesson learned no more badly researched spur of the moment, i'm ordering some stuff here anyway, add-ons to my Prusa I3 :).

It would be nice if this threat stayed visible so future prospective buyers are aware of this.

Again I would like to thank all of you who have devoted valuable time to this.

boelle commented 9 years ago

me and @ErikZalm had a brief talk about this one on IRC chat....

reprapworld should provide support for their hardware not us.... users are welcome to add the support... but marlin as a project should not do it, unless we are total out of issues and PR's and are so bored... but that is not going to happen for a long time...

so the conclusion is to rename this as a feature request and remove it from the milestone...

thinkyhead commented 9 years ago

Kooky idea: Can a single CS line be doubled, such that when it goes low/high it causes a second line to go to the opposite state? Could such a hardware solution address SPI conflicts like this?

lordofhyphens commented 9 years ago

@thinkyhead You'd need an inverter in front of one of the SPI CS pins. This has the side effect of not being able to turn off a device. Unless you're flat out of pins, it's better to give each CS its own pin.

If you had a lot of SPI devices, you could MUX the CS line, though--you'd need log2(N) pins to do that though, where N is the number of SPI devices. You'd increase the latency for any specific device, though, if you wanted to keep polling everything.

For this keypad, the other problem is that only 1 input and 1 output peripheral can be installed at the same time. This is because the source defines structures and functions, and C gets unhappy if you have 2 structs defined that have the same name, or 2 functions with the same signature.

boelle commented 9 years ago

i will close this one.... support for new hardware should still come from the inventor and not us...

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.