diff options
| author | krolyxon <me@krolyxon.com> | 2026-06-08 23:10:46 +0530 |
|---|---|---|
| committer | krolyxon <me@krolyxon.com> | 2026-06-08 23:10:46 +0530 |
| commit | 3120783000d0025b183b0397acaa8b769499eb38 (patch) | |
| tree | 1c4f93be213f1b1d48f59e554562d847b4e7c25e /.pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c | |
Initial gh-pages firmware hosting
Diffstat (limited to '.pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c')
| -rw-r--r-- | .pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/.pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c b/.pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c new file mode 100644 index 0000000..6db0348 --- /dev/null +++ b/.pio/libdeps/esp32-s3-n16r8/Adafruit NeoPixel/psoc6.c @@ -0,0 +1,87 @@ +#if defined(ARDUINO_ARCH_PSOC6) + +#include "Arduino.h" +#include "cy_syslib.h" +#include "cyhal_gpio.h" +#include "cyhal_system.h" + +void psoc6_show(uint8_t pin, uint8_t *pixels, uint32_t numBytes, + bool is800KHZ) { + if (!pixels) + return; + noInterrupts(); + GPIO_PRT_Type *base = CYHAL_GET_PORTADDR(mapping_gpio_pin[pin]); + uint32_t pinNum = CYHAL_GET_PIN(mapping_gpio_pin[pin]); + if (is800KHZ) { + for (uint16_t i = 0; i < numBytes; i++) { + uint8_t b = pixels[i]; + for (uint8_t j = 0; j < 8; j++) { + bool bit = (b & 0x80) != 0; + b <<= 1; + switch (bit) { + case 1: + // Send a 1-bit + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + break; + case 0: + // Send a 0-bit + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + break; + } + } + } + } else { + for (size_t i = 0; i < numBytes; i++) { + uint8_t b = pixels[i]; + for (uint8_t j = 0; j < 8; j++) { + bool bit = (b & 0x80) != 0; + b <<= 1; + switch (bit) { + case 1: + // Send a 1-bit + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + break; + case 0: + // Send a 0-bit + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 1); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + Cy_GPIO_Write(base, pinNum, 0); + break; + } + } + } + } + interrupts(); + delayMicroseconds(50); + return; +} +#endif
\ No newline at end of file |
