initial commit
This commit is contained in:
87
libraries/Adafruit_NeoPixel/psoc6.c
Normal file
87
libraries/Adafruit_NeoPixel/psoc6.c
Normal file
@@ -0,0 +1,87 @@
|
||||
#if defined(ARDUINO_ARCH_PSOC6)
|
||||
|
||||
#include "cyhal_gpio.h"
|
||||
#include "cyhal_system.h"
|
||||
#include "cy_syslib.h"
|
||||
#include "Arduino.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
|
||||
Reference in New Issue
Block a user