diff options
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 |
