Issues with adapting PICA firmware [SOLVED]



I recently burned through my third ramps, and decided to get a PICA board instead. I have a Wilson I, and I was running on an older version of Marlin, 1.0.4.

I’ve adapted it to use the PICA by modifying the Pins.h and the boards.h, but the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER is still not playing along. I can get the encorder to beep when making selections, but it just flickers.

I’m fine with upgrading to a newer version of Marlin, but from what I can tell the current one that Marty has on his github isn’t updated yet to be PICA specific, and the defunct version won’t compile. I get the following error when only commenting out the following in the configuration.h:

//#define WILSON_II_TYPE

and uncommenting the following:

#define MOTHERBOARD BOARD_PICA_REVC (even though I have a REVE)

verifying the code throws the following error(s)

cckrc2vD.ltrans1.o:(.text+0xe00): undefined reference to `x_right_stop_pos’

cckrc2vD.ltrans1.o:(.text+0xe04): undefined reference to `x_right_stop_pos’

cckrc2vD.ltrans1.o:(.text+0xe08): undefined reference to `x_right_stop_pos’

cckrc2vD.ltrans1.o:(.text+0xe0c): undefined reference to `x_right_stop_pos’

C:\Users\Fractle\AppData\Local\Temp\cckrc2vD.ltrans1.ltrans.o: In function `Config_RetrieveSettings()’:

cckrc2vD.ltrans1.o:(.text+0x15be): undefined reference to `x_right_stop_pos’

C:\Users\Fractle\AppData\Local\Temp\cckrc2vD.ltrans1.ltrans.o:cckrc2vD.ltrans1.o:(.text+0x15c0): more undefined references to `x_right_stop_pos’ follow

collect2.exe: error: ld returned 1 exit status

Using library U8glib at version 1.19.1 in folder: C:\Users\Fractle\Documents\Arduino\libraries\U8glib
Using library LiquidCrystal at version 1.0.5 in folder: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.

Any help would be greatly appreciated, I’m kind of stumped at this point…


Update to the above, if I don’t comment out the following lines:


Then the MarlinWilsonDefunct-master will compile just fine. the issue is that I don’t have any bed leveling and I don’t have the rack and pinion system that Marty designed. I assume leaving these things in there when I don’t have them could be pretty bad…


What bed levelling do you have? If you aren’t using the rack and pinion, you can probably use the main marlin fork. I am using an inductive probe and use 1.1.x no worries.


are you using it with the PICA? I didn’t see any support for it in the main fork. do I just need to add the board to boards.h and pins.h and give it a try?


Duh, sorry I knew there was something else.

There is a PR up to get it in, but it looks like Marty hit some trouble. I could help get the pull across the line, but don’t have a pica to test with.


I am looking to see if I can get this up and going:


do you have an idea why all these errors come up when I comment out the auto leveling stuff? I’m new to firmware editing beyond modifying my Configuration.h.

what does:
cckrc2vD.ltrans1.o:(.text+0xe00): undefined reference to `x_right_stop_pos’


if I could get the PICA board REV C running off the main marlin branch that would be amazing.


Ok, so I got my initial attempt at modifying my 1.0.3 firmware running (HUZZAH!!!). the problem was that I wasn’t running off a 12V supply. apparently the PICA needs a 12V supply to run the LCD? I figured this out by trying the other standard discount controller and it wouldn’t power up at all, which is a very different behavior in comparison to the ramps. it makes sense that it would be something derpy.

That being said, I tried to adapt the RCBugFix-mjrice branch of marlin running, since it would be nice to have access to all the new features, and the screen was all garbled.

I followed the instructions in this post:

and that didn’t seem to have any effect. LCD still works though, just totally not readable by anyone on this earthly plane…

the ONE THING i couldn’t do, was make any modifications to the dogm_font_data_marlin.h as specified in this post:

it doesn’t look like that one file exists anymore… but maybe its not relevant either.

Any thoughts??


Looks like the solution to this issue was here:

specifically this:
I got it to work with the full graphics controller by changing the lines 75-77 in ultralcd_st7920_u8glib_rrd.h to slightly longer delays:

#define CPU_ST7920_DELAY_1 DELAY_2_NOP
#define CPU_ST7920_DELAY_2 DELAY_2_NOP
#define CPU_ST7920_DELAY_3 DELAY_3_NOP
Now I just need to run a test print. I think we’re getting pretty close to solving this one.