Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: add suppport for reprapworld keypad #1142

Closed
vanhooren opened this issue Nov 12, 2014 · 26 comments
Closed

Feature request: add suppport for reprapworld keypad #1142

vanhooren opened this issue Nov 12, 2014 · 26 comments

Comments

@vanhooren
Copy link

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

  • I only select the discount controller
  • 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_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
Copy link

​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
Copy link
Author

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
Copy link

​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
Copy link
Contributor

boelle commented Dec 17, 2014

did you get the issue solved?

@vanhooren
Copy link
Author

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
Copy link
Contributor

boelle commented Dec 18, 2014

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

@vanhooren
Copy link
Author

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
Copy link
Author

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.

@boelle boelle modified the milestones: Bug Fixing Round 1, Bug Fixing Round 2 Jan 4, 2015
@stv0g
Copy link
Contributor

stv0g commented Jan 9, 2015

Just notes:

  • Product Page
  • Wiki
  • 9 Buttons
  • connected to Port AUX 2 of RAMPS 1.4
  • its using a 8bit-parallel in -> serial out shift register (74HC165)
  • probably read via SPI?
  • only compiler errors, probably missing #include

@lordofhyphens
Copy link

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
Copy link

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
Copy link
Author

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
Copy link

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
Copy link
Contributor

boelle commented Jan 15, 2015

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
Copy link

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
Copy link
Contributor

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
Copy link

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
#1142 (comment)
.

@lordofhyphens
Copy link

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
#1142 (comment)
.

@ErikZalm
Copy link
Contributor

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
Copy link

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
Copy link
Author

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
Copy link
Contributor

boelle commented Jan 16, 2015

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...

@boelle boelle changed the title Ramps 1.4 Reprap Discount full graphic + reprapworld keypad Feature request: add suppport for reprapworld keypad Jan 16, 2015
@boelle boelle added T: Feature Request Features requested by users. and removed Bug: Confirmed ! labels Jan 16, 2015
@boelle boelle removed this from the Bug Fixing Round 2 milestone Jan 16, 2015
@thinkyhead
Copy link
Member

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
Copy link

@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 boelle added this to the Feature Requests Round 7 milestone Apr 1, 2015
@boelle
Copy link
Contributor

boelle commented Apr 26, 2015

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

@boelle boelle closed this as completed Apr 26, 2015
@boelle boelle removed this from the Feature Requests Round 4_ milestone Jun 29, 2015
@github-actions
Copy link

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.

@github-actions github-actions bot locked and limited conversation to collaborators Apr 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants