Open ziemowitp opened 5 years ago
+1, and I know there are others.
Additional Discussion on this from the Marlin issues page here: https://github.com/MarlinFirmware/Marlin/issues/12159
This is one of the last things to finish the LPC1768 implementation AFAIK on Marlin. There are example projects that have made NeoPixels work that may give a head start: https://github.com/adamgreen/NeoPixelTree https://os.mbed.com/users/JacobBramley/code/PixelArray/
The problem I see there is that these are all relying on importing mbed.h. Bitbanging would be the better solution. It should work somehow like this https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/
PR's gladly accepted :) we don't own one of these chips
I would love to help but I don't know enough about hardware. It looks like it just needs a small section added:
Pio port; ^~~ .piolibdeps\Adafruit NeoPixel_ID28\Adafruit_NeoPixel.cpp:1736:19: error: 'port' was not declared in this scope Pio port; ^~~~ Compiling .pioenvs\LPC1768\CMSIS\driver\lpc17xx_rit.c.o .piolibdeps\Adafruit NeoPixel_ID28\Adafruit_NeoPixel.cpp:1736:19: note: suggested alternative: 'qsort'
Pio port;
^~~~
qsort
.piolibdeps\Adafruit NeoPixel_ID28\Adafruit_NeoPixel.cpp:1737:12: error: 'WoReg' does not name a type
volatile WoReg portSet, portClear, timeValue, *timeReset;
^~~~~
.piolibdeps\Adafruit NeoPixel_ID28\Adafruit_NeoPixel.cpp:1740:3: error: 'pmc_set_writeprotect' was not declared in this scope
pmc_set_writeprotect(false);
^~~~~~~~
compilation terminated due to -fmax-errors=5.
Compiling .pioenvs\LPC1768\CMSIS\driver\lpc17xx_rtc.c.o
*** [.pioenvs\LPC1768\libd8d\Adafruit NeoPixel_ID28\Adafruit_NeoPixel.cpp.o] Error 1
[ERROR] Took 24.82 seconds
Environment LPC1768 [ERROR]
[ERROR] Took 24.82 seconds
All of these things together should help me to add LPC support to the NeoPixel cpp file:
[x] Having the LPC datasheet [x] Having the linked code and Adafruit NeoPixel library code as references. [ ] Having some reference code that does similar bit-bashing [ ] Knowing some good pins to use for SBASE, ReARM, Smoothieboard, etc.
Here's an example for bitbashing Neopixels with an Arduino. As far as I know LPC should have a delay_ns function. https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/
I've added LPC176x NeoPixel support to Marlin with my fork as the LPC176x framework Marlin uses is not mature enough to have this pushed upstream at the moment.
thanks - when you can submit a PR please do :)
I compiled Marlin with your library but I can't seem to get it working. What pin did you use?
I'm able to compile Marlin with Neopixels support working. Using the current 2.0.x branch. I use pin P1_12 but any other free pin should do fine. Thanks for the great work!!!
@ziemowitp not sure what you mean by "with your library" as long as you make sure platformio frameworks and libraries are upto date just build Marlin as normal, any available pin will work as @tharts said, although be careful that the pin does not have other things connected on the pcb.
It works! Thank you. PlatformIO kept on replacing the library with one from the repo.
I'm attempting to compile Marlin Firmware on my MKS Sbase 1.3 board which is based on LPC1768. I am unable to turn on Neopixel support because Adafruit_NeoPixel which doesn't have support built for LPC1768 platform.