diff --git a/src/internal/methods/NeoArmMethod.h b/src/internal/methods/NeoArmMethod.h index fc0fa2c..a31365f 100644 --- a/src/internal/methods/NeoArmMethod.h +++ b/src/internal/methods/NeoArmMethod.h @@ -139,10 +139,10 @@ public: class NeoArmMk20dxSpeedPropsWs2805 { public: - static const uint32_t CyclesT0h = (F_CPU / 4000000); - static const uint32_t CyclesT1h = (F_CPU / 913750); - static const uint32_t Cycles = (F_CPU / 584800); - static const uint32_t ResetTimeUs = 300; + static const uint32_t CyclesT0h = (F_CPU / 3333333); + static const uint32_t CyclesT1h = (F_CPU / 1265822); + static const uint32_t Cycles = (F_CPU / 917431); + static const uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoArmMk20dxSpeedPropsSk6812 : public NeoArmMk20dxSpeedProps800KbpsBase @@ -239,7 +239,7 @@ typedef NeoArmMethodBase> Ne typedef NeoArmMethodBase> NeoArmApa106Method; typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; - +typedef NeoArmWs2805Method NeoArmWs2814Method; typedef NeoArmTm1814InvertedMethod NeoArmTm1914InvertedMethod; #elif defined(__MKL26Z64__) // Teensy-LC @@ -373,37 +373,42 @@ typedef NeoArmMethodBase NeoArmTm1829InvertedMethod; typedef NeoArmMethodBase NeoArm800KbpsMethod; typedef NeoArm800KbpsMethod NeoArmApa106Method; typedef NeoArmWs2812xMethod NeoArmWs2805Method; +typedef NeoArmWs2805Method NeoArmWs2814Method; typedef NeoArmTm1814InvertedMethod NeoArmTm1914InvertedMethod; #else #error "Teensy-LC: Sorry, only 48 MHz is supported, please set Tools > CPU Speed to 48 MHz" #endif // F_CPU == 48000000 -#elif defined(__SAMD21G18A__) // Arduino Zero +#elif defined(__SAMD21G18A__) // Arduino Zero, SEEED XIAO class NeoArmSamd21g18aSpeedProps800KbpsBase { public: + // should match Zero Bit TH static void BitPreWait() { - asm("nop; nop; nop; nop; nop; nop; nop; nop;"); + asm("nop; nop; nop; nop; nop; nop; "); } + // should match One Bit TH - BitPreWait (with pin clear after) static void BitT1hWait() { asm("nop; nop; nop; nop; nop; nop; nop; nop;" "nop; nop; nop; nop; nop; nop; nop; nop;" - "nop; nop; nop; nop;"); + "nop; "); } + // should match Zero Bit TL - BitPreWait (with pin clear before) static void BitT0lWait() { asm("nop; nop; nop; nop; nop; nop; nop; nop;" "nop; nop; nop; nop; nop; nop; nop; nop;" - "nop; nop; nop; nop;"); + "nop; "); } + // this should match cycles it takes to prepare next byte static void BitPostWait() { - asm("nop; nop; nop; nop; nop; nop; nop; nop; nop;"); + asm("nop; nop; nop; nop; nop;"); } }; @@ -441,10 +446,12 @@ public: class NeoArmSamd21g18aSpeedProps400KbpsBase { public: + // should match Zero Bit TH static void BitPreWait() { asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"); } + // should match One Bit TH - BitPreWait (with pin clear after) static void BitT1hWait() { asm("nop; nop; nop; nop; nop; nop; nop; nop;" @@ -452,6 +459,7 @@ public: "nop; nop; nop; nop; nop; nop; nop; nop;" "nop; nop; nop;"); } + // should match Zero Bit TL - BitPreWait (with pin clear before) static void BitT0lWait() { asm("nop; nop; nop; nop; nop; nop; nop; nop;" @@ -459,6 +467,7 @@ public: "nop; nop; nop; nop; nop; nop; nop; nop;" "nop; nop; nop;"); } + // this should match cycles it takes to prepare next byte static void BitPostWait() { asm("nop; nop; nop; nop; nop; nop; nop;"); @@ -471,10 +480,10 @@ public: static const uint32_t ResetTimeUs = 50; }; -class NeoArmSamd21g18aSpeedPropsWs2805 : public NeoArmSamd21g18aSpeedProps400KbpsBase +class NeoArmSamd21g18aSpeedPropsWs2805 : public NeoArmSamd21g18aSpeedProps800KbpsBase { public: - static const uint32_t ResetTimeUs = 300; + static const uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; template class NeoArmSamd21g18aSpeedBase @@ -511,7 +520,9 @@ public: *clr = pinMask; T_SPEEDPROPS::BitT0lWait(); } - if (bitMask >>= 1) + + bitMask >>= 1; + if (bitMask) { T_SPEEDPROPS::BitPostWait(); } @@ -536,6 +547,7 @@ typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; typedef NeoArm400KbpsMethod NeoArmApa106Method; +typedef NeoArmWs2805Method NeoArmWs2814Method; typedef NeoArmTm1814InvertedMethod NeoArmTm1914InvertedMethod; #elif defined(ARDUINO_STM32_FEATHER) || defined(ARDUINO_ARCH_STM32L4) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32F1)// FEATHER WICED (120MHz) @@ -732,6 +744,7 @@ typedef NeoArmMethodBase> NeoA typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArm800KbpsMethod NeoArmApa106Method; typedef NeoArmWs2812xMethod NeoArmWs2805Method; +typedef NeoArmWs2805Method NeoArmWs2814Method; typedef NeoArmTm1814InvertedMethod NeoArmTm1914InvertedMethod; #else // Other ARM architecture -- Presumed Arduino Due @@ -757,10 +770,10 @@ public: class NeoArmOtherSpeedPropsWs2805 { public: - static const uint32_t CyclesT0h = static_cast((0.35 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t CyclesT1h = static_cast((1.35 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t Cycles = static_cast((1.70 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); - static const uint32_t ResetTimeUs = 300; + static const uint32_t CyclesT0h = static_cast((0.30 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t CyclesT1h = static_cast((0.79 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t Cycles = static_cast((1.09 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoArmOtherSpeedPropsSk6812 : public NeoArmOtherSpeedProps800KbpsBase @@ -880,6 +893,7 @@ typedef NeoArmMethodBase> NeoA typedef NeoArmMethodBase> NeoArm800KbpsMethod; typedef NeoArmMethodBase> NeoArm400KbpsMethod; typedef NeoArm400KbpsMethod NeoArmApa106Method; +typedef NeoArmWs2805Method NeoArmWs2814Method; typedef NeoArmTm1814InvertedMethod NeoArmTm1914InvertedMethod; #endif @@ -891,14 +905,15 @@ typedef NeoArmWs2812xMethod NeoWs2812xMethod; typedef NeoArmWs2812xMethod NeoWs2811Method; typedef NeoArmWs2812xMethod NeoWs2816Method; typedef NeoArmWs2805Method NeoWs2805Method; +typedef NeoArmWs2805Method NeoWs2814Method; typedef NeoArmSk6812Method NeoSk6812Method; typedef NeoArmSk6812Method NeoLc8812Method; typedef NeoArm800KbpsMethod NeoWs2812Method; typedef NeoArmApa106Method NeoApa106Method; typedef NeoArmWs2812xMethod Neo800KbpsMethod; -#ifdef NeoArm400KbpsMethod // this is needed due to missing 400Kbps for some platforms -typedef NeoArm400KbpsMethod Neo400KbpsMethod; -#endif + +//typedef NeoArm400KbpsMethod Neo400KbpsMethod; // due to missing 400Kbps for some platforms + // there is no non-invert methods for arm, but the norm for TM1814 is inverted, so typedef NeoArmTm1814InvertedMethod NeoTm1814InvertedMethod; typedef NeoArmTm1914InvertedMethod NeoTm1914InvertedMethod; diff --git a/src/internal/methods/NeoAvrMethod.h b/src/internal/methods/NeoAvrMethod.h index d534ff1..beb1b28 100644 --- a/src/internal/methods/NeoAvrMethod.h +++ b/src/internal/methods/NeoAvrMethod.h @@ -113,12 +113,6 @@ public: static const uint32_t ResetTimeUs = 300; }; -class NeoAvrSpeedWs2805 : public NeoAvrSpeed600KbpsBase -{ -public: - static const uint32_t ResetTimeUs = 300; -}; - class NeoAvrSpeedSk6812 : public NeoAvrSpeed800KbpsBase { public: @@ -329,7 +323,6 @@ private: }; typedef NeoAvrMethodBase NeoAvrWs2812xMethod; -typedef NeoAvrMethodBase NeoAvrWs2805Method; typedef NeoAvrMethodBase NeoAvrSk6812Method; typedef NeoAvrMethodBase NeoAvrApa106Method; typedef NeoAvrIpsMethodBase NeoAvr600KbpsIpsMethod; @@ -341,12 +334,15 @@ typedef NeoAvrMethodBase NeoAvr400KbpsMethod; typedef NeoAvrTm1814InvertedMethod NeoAvrTm1914InvertedMethod; // AVR doesn't have alternatives yet, so there is just the default +typedef NeoAvrWs2812xMethod NeoWs2805Method; +typedef NeoWs2805Method NeoWs2814Method; typedef NeoAvrWs2812xMethod NeoWs2813Method; typedef NeoAvrWs2812xMethod NeoWs2812xMethod; typedef NeoAvr800KbpsMethod NeoWs2812Method; typedef NeoAvrWs2812xMethod NeoWs2811Method; typedef NeoAvrWs2812xMethod NeoWs2816Method; -typedef NeoAvrWs2805Method NeoWs2805Method; +typedef NeoAvrWs2812xMethod NeoWs2805Method; +typedef NeoWs2805Method NeoWs2814Method; typedef NeoAvrSk6812Method NeoSk6812Method; typedef NeoAvrSk6812Method NeoLc8812Method; typedef NeoAvrApa106Method NeoApa106Method; diff --git a/src/internal/methods/NeoEsp32I2sMethod.h b/src/internal/methods/NeoEsp32I2sMethod.h index b981b7d..9db245c 100644 --- a/src/internal/methods/NeoEsp32I2sMethod.h +++ b/src/internal/methods/NeoEsp32I2sMethod.h @@ -49,9 +49,9 @@ public: class NeoEsp32I2sSpeedWs2805 { public: - const static uint32_t I2sSampleRate = 72960; // 588,235 hz / 8 = 73,529 sample rate - const static uint16_t ByteSendTimeUs = 14; - const static uint16_t ResetTimeUs = 300; + const static uint32_t I2sSampleRate = 114678; // 917431 hz / 8 = 114678 + const static uint16_t ByteSendTimeUs = 9; + const static uint16_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoEsp32I2sSpeedSk6812 @@ -301,7 +301,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2s0800KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0400KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Apa106Method; - +typedef NeoEsp32I2s0Ws2805Method NeoEsp32I2s0Ws2814Method; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Ws2812xInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0SWs2805InvertedMethod; @@ -312,6 +312,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2s0800KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0400KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Apa106InvertedMethod; +typedef NeoEsp32I2s0SWs2805InvertedMethod NeoEsp32I2s0SWs2814InvertedMethod; #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) // (SOC_I2S_NUM == 2) @@ -325,6 +326,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2s1800KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1400KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Apa106Method; +typedef NeoEsp32I2s1Ws2805Method NeoEsp32I2s1Ws2814Method; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Ws2812xInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Ws2805InvertedMethod; @@ -335,7 +337,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2s1800KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1400KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Apa106InvertedMethod; - +typedef NeoEsp32I2s1Ws2805InvertedMethod NeoEsp32I2s1Ws2814InvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNWs2812xMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNWs2805Method; @@ -346,6 +348,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2sN800KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sN400KbpsMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNApa106Method; +typedef NeoEsp32I2sNWs2805Method NeoEsp32I2sNWs2814Method; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNWs2812xInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNWs2805InvertedMethod; @@ -356,6 +359,7 @@ typedef NeoEsp32I2sMethodBase NeoEsp32I2sN800KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sN400KbpsInvertedMethod; typedef NeoEsp32I2sMethodBase NeoEsp32I2sNApa106InvertedMethod; +typedef NeoEsp32I2sNWs2805InvertedMethod NeoEsp32I2sNWs2814InvertedMethod; #endif @@ -369,6 +373,7 @@ typedef NeoEsp32I2s1800KbpsMethod NeoWs2812Method; typedef NeoEsp32I2s1Ws2812xMethod NeoWs2811Method; typedef NeoEsp32I2s1Ws2812xMethod NeoWs2816Method; typedef NeoEsp32I2s1Ws2805Method NeoWs2805Method; +typedef NeoEsp32I2s1Ws2814Method NeoWs2814Method; typedef NeoEsp32I2s1Sk6812Method NeoSk6812Method; typedef NeoEsp32I2s1Tm1814Method NeoTm1814Method; typedef NeoEsp32I2s1Tm1829Method NeoTm1829Method; @@ -384,6 +389,7 @@ typedef NeoEsp32I2s1Ws2812xInvertedMethod NeoWs2812xInvertedMethod; typedef NeoEsp32I2s1Ws2812xInvertedMethod NeoWs2811InvertedMethod; typedef NeoEsp32I2s1Ws2812xInvertedMethod NeoWs2816InvertedMethod; typedef NeoEsp32I2s1Ws2805InvertedMethod NeoWs2805InvertedMethod; +typedef NeoEsp32I2s1Ws2814InvertedMethod NeoWs2814InvertedMethod; typedef NeoEsp32I2s1800KbpsInvertedMethod NeoWs2812InvertedMethod; typedef NeoEsp32I2s1Sk6812InvertedMethod NeoSk6812InvertedMethod; typedef NeoEsp32I2s1Tm1814InvertedMethod NeoTm1814InvertedMethod; diff --git a/src/internal/methods/NeoEsp32I2sXMethod.h b/src/internal/methods/NeoEsp32I2sXMethod.h index 9fc2303..e6960b2 100644 --- a/src/internal/methods/NeoEsp32I2sXMethod.h +++ b/src/internal/methods/NeoEsp32I2sXMethod.h @@ -785,6 +785,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X8400KbpsMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X8Apa106Method; +typedef NeoEsp32I2s0X8Ws2805Method NeoEsp32I2s0X8Ws2814Method; typedef NeoEsp32I2s0X8Ws2812xMethod NeoEsp32I2s0X8Ws2813Method; typedef NeoEsp32I2s0X8Ws2812xMethod NeoEsp32I2s0X8Ws2812dMethod; typedef NeoEsp32I2s0X8Ws2812xMethod NeoEsp32I2s0X8Ws2811Method; @@ -794,7 +795,7 @@ typedef NeoEsp32I2s0X8Sk6812Method NeoEsp32I2s0X8Lc8812Method; // I2s0x16 typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Ws2812xMethod; -typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Ws2805Method; +typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Ws2805Method; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Sk6812Method; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Tm1814Method; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Tm1829Method; @@ -803,6 +804,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16400KbpsMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Apa106Method; +typedef NeoEsp32I2s0X16Ws2805Method NeoEsp32I2s0X16Ws2814Method; typedef NeoEsp32I2s0X16Ws2812xMethod NeoEsp32I2s0X16Ws2813Method; typedef NeoEsp32I2s0X16Ws2812xMethod NeoEsp32I2s0X16Ws2812dMethod; typedef NeoEsp32I2s0X16Ws2812xMethod NeoEsp32I2s0X16Ws2811Method; @@ -825,6 +827,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X8400KbpsMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X8Apa106Method; +typedef NeoEsp32I2s1X8Ws2805Method NeoEsp32I2s1X8Ws2814Method; typedef NeoEsp32I2s1X8Ws2812xMethod NeoEsp32I2s1X8Ws2813Method; typedef NeoEsp32I2s1X8Ws2812xMethod NeoEsp32I2s1X8Ws2812dMethod; typedef NeoEsp32I2s1X8Ws2812xMethod NeoEsp32I2s1X8Ws2811Method; @@ -843,6 +846,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X16400KbpsMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X16Apa106Method; +typedef NeoEsp32I2s1X16Ws2805Method NeoEsp32I2s1X16Ws2814Method; typedef NeoEsp32I2s1X16Ws2812xMethod NeoEsp32I2s1X16Ws2813Method; typedef NeoEsp32I2s1X16Ws2812xMethod NeoEsp32I2s1X16Ws2812dMethod; typedef NeoEsp32I2s1X16Ws2812xMethod NeoEsp32I2s1X16Ws2811Method; @@ -866,6 +870,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X8400KbpsInvertedMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X8Apa106InvertedMethod; +typedef NeoEsp32I2s0X8Ws2805InvertedMethod NeoEsp32I2s0X8Ws2814InvertedMethod; typedef NeoEsp32I2s0X8Ws2812xInvertedMethod NeoEsp32I2s0X8Ws2813InvertedMethod; typedef NeoEsp32I2s0X8Ws2812xInvertedMethod NeoEsp32I2s0X8Ws2812xInvertedMethod; typedef NeoEsp32I2s0X8Ws2812xInvertedMethod NeoEsp32I2s0X8Ws2811InvertedMethod; @@ -885,6 +890,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16400KbpsInvertedMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s0X16Apa106InvertedMethod; +typedef NeoEsp32I2s0X16Ws2805InvertedMethod NeoEsp32I2s0X16Ws2814InvertedMethod; typedef NeoEsp32I2s0X16Ws2812xInvertedMethod NeoEsp32I2s0X16Ws2813InvertedMethod; typedef NeoEsp32I2s0X16Ws2812xInvertedMethod NeoEsp32I2s0X16Ws2812xInvertedMethod; typedef NeoEsp32I2s0X16Ws2812xInvertedMethod NeoEsp32I2s0X16Ws2811InvertedMethod; @@ -905,6 +911,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X8400KbpsInvertedMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X8Apa106InvertedMethod; +typedef NeoEsp32I2s1X8Ws2805InvertedMethod NeoEsp32I2s1X8Ws2814InvertedMethod; typedef NeoEsp32I2s1X8Ws2812xInvertedMethod NeoEsp32I2s1X8Ws2813InvertedMethod; typedef NeoEsp32I2s1X8Ws2812xInvertedMethod NeoEsp32I2s1X8Ws2812xInvertedMethod; typedef NeoEsp32I2s1X8Ws2812xInvertedMethod NeoEsp32I2s1X8Ws2811InvertedMethod; @@ -923,6 +930,7 @@ typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X16400KbpsInvertedMethod; typedef NeoEsp32I2sXMethodBase NeoEsp32I2s1X16Apa106InvertedMethod; +typedef NeoEsp32I2s1X16Ws2805InvertedMethod NeoEsp32I2s1X16Ws2814InvertedMethod; typedef NeoEsp32I2s1X16Ws2812xInvertedMethod NeoEsp32I2s1X16Ws2813InvertedMethod; typedef NeoEsp32I2s1X16Ws2812xInvertedMethod NeoEsp32I2s1X16Ws2812xInvertedMethod; typedef NeoEsp32I2s1X16Ws2812xInvertedMethod NeoEsp32I2s1X16Ws2811InvertedMethod; diff --git a/src/internal/methods/NeoEsp32RmtMethod.h b/src/internal/methods/NeoEsp32RmtMethod.h index bf1ca48..5c27b1a 100644 --- a/src/internal/methods/NeoEsp32RmtMethod.h +++ b/src/internal/methods/NeoEsp32RmtMethod.h @@ -145,9 +145,9 @@ public: class NeoEsp32RmtSpeedWs2805 : public NeoEsp32RmtSpeedBase { public: - const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(350, 1350); - const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1350, 350); - const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us + const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 790); + const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(790, 300); + const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // spec is 280, intentionally longer for compatiblity use static void IRAM_ATTR Translate(const void* src, rmt_item32_t* dest, @@ -328,9 +328,9 @@ public: class NeoEsp32RmtInvertedSpeedWs2805 : public NeoEsp32RmtInvertedSpeedBase { public: - const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(350, 1350); - const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(1350, 350); - const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // 300us + const static DRAM_ATTR uint32_t RmtBit0 = Item32Val(300, 790); + const static DRAM_ATTR uint32_t RmtBit1 = Item32Val(790, 300); + const static DRAM_ATTR uint16_t RmtDurationReset = FromNs(300000); // spec is 280, intentionally longer for compatiblity use static void IRAM_ATTR Translate(const void* src, rmt_item32_t* dest, @@ -700,6 +700,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32RmtNGs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32RmtN800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32RmtN400KbpsMethod; +typedef NeoEsp32RmtNWs2805Method NeoEsp32RmtNWs2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Ws2812xMethod; @@ -714,6 +715,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0400KbpsMethod; +typedef NeoEsp32Rmt0Ws2805Method NeoEsp32Rmt0Ws2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Ws2812xMethod; @@ -728,6 +730,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1400KbpsMethod; +typedef NeoEsp32Rmt1Ws2805Method NeoEsp32Rmt1Ws2814Method; #if !defined(CONFIG_IDF_TARGET_ESP32C3) @@ -744,6 +747,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2400KbpsMethod; +typedef NeoEsp32Rmt2Ws2805Method NeoEsp32Rmt2Ws2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Ws2812xMethod; @@ -758,6 +762,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3400KbpsMethod; +typedef NeoEsp32Rmt3Ws2805Method NeoEsp32Rmt3Ws2814Method; #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) @@ -774,6 +779,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4400KbpsMethod; +typedef NeoEsp32Rmt4Ws2805Method NeoEsp32Rmt4Ws2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Ws2812xMethod; @@ -788,6 +794,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5400KbpsMethod; +typedef NeoEsp32Rmt5Ws2805Method NeoEsp32Rmt5Ws2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Ws2812xMethod; @@ -802,6 +809,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6400KbpsMethod; +typedef NeoEsp32Rmt6Ws2805Method NeoEsp32Rmt6Ws2814Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Ws2812xMethod; @@ -816,6 +824,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Gs1903Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7400KbpsMethod; +typedef NeoEsp32Rmt7Ws2805Method NeoEsp32Rmt7Ws2814Method; #endif // !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) #endif // !defined(CONFIG_IDF_TARGET_ESP32C3) @@ -834,6 +843,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32RmtNGs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32RmtN800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32RmtN400KbpsInvertedMethod; +typedef NeoEsp32RmtNWs2805InvertedMethod NeoEsp32RmtNWs2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Ws2812xInvertedMethod; @@ -848,6 +858,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt0400KbpsInvertedMethod; +typedef NeoEsp32Rmt0Ws2805InvertedMethod NeoEsp32Rmt0Ws2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Ws2812xInvertedMethod; @@ -862,6 +873,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1400KbpsInvertedMethod; +typedef NeoEsp32Rmt1Ws2805InvertedMethod NeoEsp32Rmt1Ws2814InvertedMethod; #if !defined(CONFIG_IDF_TARGET_ESP32C3) @@ -878,6 +890,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2400KbpsInvertedMethod; +typedef NeoEsp32Rmt2Ws2805InvertedMethod NeoEsp32Rmt2Ws2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Ws2812xInvertedMethod; @@ -892,6 +905,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt3400KbpsInvertedMethod; +typedef NeoEsp32Rmt3Ws2805InvertedMethod NeoEsp32Rmt3Ws2814InvertedMethod; #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) @@ -908,6 +922,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt4400KbpsInvertedMethod; +typedef NeoEsp32Rmt4Ws2805InvertedMethod NeoEsp32Rmt4Ws2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Ws2812xInvertedMethod; @@ -922,6 +937,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt5400KbpsInvertedMethod; +typedef NeoEsp32Rmt5Ws2805InvertedMethod NeoEsp32Rmt5Ws2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Ws2812xInvertedMethod; @@ -936,6 +952,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt6400KbpsInvertedMethod; +typedef NeoEsp32Rmt6Ws2805InvertedMethod NeoEsp32Rmt6Ws2814InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Ws2812xInvertedMethod; @@ -950,6 +967,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7Gs1903InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt7400KbpsInvertedMethod; +typedef NeoEsp32Rmt7Ws2805InvertedMethod NeoEsp32Rmt7Ws2814InvertedMethod; #endif // !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32S3) #endif // !defined(CONFIG_IDF_TARGET_ESP32C3) @@ -970,6 +988,7 @@ typedef NeoEsp32Rmt1800KbpsMethod NeoWs2812Method; typedef NeoEsp32Rmt1Ws2812xMethod NeoWs2811Method; typedef NeoEsp32Rmt1Ws2812xMethod NeoWs2816Method; typedef NeoEsp32Rmt1Ws2805Method NeoWs2805Method; +typedef NeoEsp32Rmt1Ws2814Method NeoWs2814Method; typedef NeoEsp32Rmt1Sk6812Method NeoSk6812Method; typedef NeoEsp32Rmt1Tm1814Method NeoTm1814Method; typedef NeoEsp32Rmt1Tm1829Method NeoTm1829Method; @@ -988,6 +1007,7 @@ typedef NeoEsp32Rmt1Ws2812xInvertedMethod NeoWs2811InvertedMethod; typedef NeoEsp32Rmt1800KbpsInvertedMethod NeoWs2812InvertedMethod; typedef NeoEsp32Rmt1Ws2812xInvertedMethod NeoWs2816InvertedMethod; typedef NeoEsp32Rmt1Ws2805InvertedMethod NeoWs2805InvertedMethod; +typedef NeoEsp32Rmt1Ws2814InvertedMethod NeoWs2814InvertedMethod; typedef NeoEsp32Rmt1Sk6812InvertedMethod NeoSk6812InvertedMethod; typedef NeoEsp32Rmt1Tm1814InvertedMethod NeoTm1814InvertedMethod; typedef NeoEsp32Rmt1Tm1829InvertedMethod NeoTm1829InvertedMethod; @@ -1008,6 +1028,8 @@ typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2812xMethod; typedef NeoEsp32Rmt6800KbpsMethod NeoWs2812Method; typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2811Method; typedef NeoEsp32Rmt6Ws2812xMethod NeoWs2816Method; +typedef NeoEsp32Rmt6Ws2805Method NeoWs2805Method; +typedef NeoEsp32Rmt6Ws2814Method NeoWs2814Method; typedef NeoEsp32Rmt6Sk6812Method NeoSk6812Method; typedef NeoEsp32Rmt6Tm1814Method NeoTm1814Method; typedef NeoEsp32Rmt6Tm1829Method NeoTm1829Method; @@ -1025,6 +1047,8 @@ typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2812xInvertedMethod; typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2811InvertedMethod; typedef NeoEsp32Rmt6800KbpsInvertedMethod NeoWs2812InvertedMethod; typedef NeoEsp32Rmt6Ws2812xInvertedMethod NeoWs2816InvertedMethod; +typedef NeoEsp32Rmt6Ws2805InvertedMethod NeoWs2805InvertedMethod; +typedef NeoEsp32Rmt6Ws2814InvertedMethod NeoWs2814InvertedMethod; typedef NeoEsp32Rmt6Sk6812InvertedMethod NeoSk6812InvertedMethod; typedef NeoEsp32Rmt6Tm1814InvertedMethod NeoTm1814InvertedMethod; typedef NeoEsp32Rmt6Tm1829InvertedMethod NeoTm1829InvertedMethod; diff --git a/src/internal/methods/NeoEsp8266DmaMethod.h b/src/internal/methods/NeoEsp8266DmaMethod.h index 49298bc..f1ba009 100644 --- a/src/internal/methods/NeoEsp8266DmaMethod.h +++ b/src/internal/methods/NeoEsp8266DmaMethod.h @@ -87,9 +87,9 @@ class NeoEsp8266DmaSpeedWs2805 : public NeoEsp8266DmaSpeedBase { public: const static uint32_t I2sClockDivisor = 4; // 0-63 - const static uint32_t I2sBaseClockDivisor = 17; // 0-63 - const static uint32_t ByteSendTimeUs = 14; // us it takes to send a single pixel element - const static uint32_t ResetTimeUs = 300; + const static uint32_t I2sBaseClockDivisor = 11; // 0-63 + const static uint32_t ByteSendTimeUs = 9; // us it takes to send a single pixel element + const static uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoEsp8266DmaSpeedSk6812 : public NeoEsp8266DmaSpeed800KbpsBase @@ -162,9 +162,9 @@ class NeoEsp8266DmaInvertedSpeedWs2805 : public NeoEsp8266DmaInvertedSpeedBase { public: const static uint32_t I2sClockDivisor = 4; // 0-63 - const static uint32_t I2sBaseClockDivisor = 17; // 0-63 - const static uint32_t ByteSendTimeUs = 14; // us it takes to send a single pixel element - const static uint32_t ResetTimeUs = 300; + const static uint32_t I2sBaseClockDivisor = 11; // 0-63 + const static uint32_t ByteSendTimeUs = 9; // us it takes to send a single pixel element + const static uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoEsp8266DmaInvertedSpeedSk6812 : public NeoEsp8266DmaInvertedSpeed800KbpsBase @@ -397,6 +397,7 @@ private: // normal typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaWs2812xMethod; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaWs2805Method; +typedef NeoEsp8266DmaWs2805Method NeoEsp8266DmaWs2814Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaSk6812Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaTm1814Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaTm1829Method; @@ -410,6 +411,7 @@ typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaInvertedWs2812xMethod; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaInvertedWs2805Method; +typedef NeoEsp8266DmaInvertedWs2805Method NeoEsp8266DmaInvertedWs2814Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaInvertedSk6812Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaInvertedTm1814Method; typedef NeoEsp8266DmaMethodBase> NeoEsp8266DmaInvertedTm1829Method; @@ -426,6 +428,7 @@ typedef NeoEsp8266Dma800KbpsMethod NeoWs2812Method; typedef NeoEsp8266DmaWs2812xMethod NeoWs2811Method; typedef NeoEsp8266DmaWs2812xMethod NeoWs2816Method; typedef NeoEsp8266DmaWs2805Method NeoWs2805Method; +typedef NeoEsp8266DmaWs2814Method NeoWs2814Method; typedef NeoEsp8266DmaSk6812Method NeoSk6812Method; typedef NeoEsp8266DmaTm1814Method NeoTm1814Method; typedef NeoEsp8266DmaTm1829Method NeoTm1829Method; @@ -444,6 +447,7 @@ typedef NeoEsp8266DmaInverted800KbpsMethod NeoWs2812InvertedMethod; typedef NeoEsp8266DmaInvertedWs2812xMethod NeoWs2811InvertedMethod; typedef NeoEsp8266DmaInvertedWs2812xMethod NeoWs2816InvertedMethod; typedef NeoEsp8266DmaInvertedWs2805Method NeoWs2805InvertedMethod; +typedef NeoEsp8266DmaInvertedWs2814Method NeoWs2814InvertedMethod; typedef NeoEsp8266DmaInvertedSk6812Method NeoSk6812InvertedMethod; typedef NeoEsp8266DmaInvertedTm1814Method NeoTm1814InvertedMethod; typedef NeoEsp8266DmaInvertedTm1829Method NeoTm1829InvertedMethod; diff --git a/src/internal/methods/NeoEsp8266UartMethod.h b/src/internal/methods/NeoEsp8266UartMethod.h index c7fc1ff..76ef790 100644 --- a/src/internal/methods/NeoEsp8266UartMethod.h +++ b/src/internal/methods/NeoEsp8266UartMethod.h @@ -295,13 +295,13 @@ public: }; // NeoEsp8266UartSpeedWs2805 contains the timing constant used to get NeoPixelBus running for Ws2805 -// Pulse cycle = 1.71 = 1.368 longer than normal, 0.731 slower, NeoEsp8266UartSpeedApa1066 +// Pulse cycle = 1.09 class NeoEsp8266UartSpeedWs2805 { public: - static const uint32_t ByteSendTimeUs = 14; // us it takes to send a single pixel element at 400khz speed - static const uint32_t UartBaud = 2339181; // APA106 pulse cycle of 1.71us, 4 serial bytes per NeoByte - static const uint32_t ResetTimeUs = 300; // us between data send bursts to reset for next update + static const uint32_t ByteSendTimeUs = 9; // us it takes to send a single pixel element at 917kbps speed + static const uint32_t UartBaud = 3669724; // pulse cycle of 1.09us, 917431bps * 4 serial bytes per NeoByte + static const uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoEsp8266UartSpeedSk6812 : public NeoEsp8266UartSpeed800KbpsBase @@ -455,6 +455,7 @@ typedef NeoEsp8266Uart0Ws2812xMethod NeoEsp8266Uart0Ws2813Method; typedef NeoEsp8266Uart0800KbpsMethod NeoEsp8266Uart0Ws2812Method; typedef NeoEsp8266Uart0Ws2812xMethod NeoEsp8266Uart0Ws2811Method; typedef NeoEsp8266Uart0Ws2812xMethod NeoEsp8266Uart0Ws2816Method; +typedef NeoEsp8266Uart0Ws2805Method NeoEsp8266Uart0Ws2814Method; typedef NeoEsp8266Uart0Tm1814Method NeoEsp8266Uart0Tm1914Method; typedef NeoEsp8266Uart0Sk6812Method NeoEsp8266Uart0Lc8812Method; @@ -471,6 +472,7 @@ typedef NeoEsp8266UartMethodBase NeoNrf52xPwm typedef NeoNrf52xMethodBase NeoNrf52xPwmNApa106Method; typedef NeoNrf52xMethodBase NeoNrf52xPwmN800KbpsMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwmN400KbpsMethod; +typedef NeoNrf52xPwmNWs2805Method NeoNrf52xPwmNWs2814Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm0Ws2811Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm0Ws2812xMethod; @@ -570,6 +571,7 @@ typedef NeoNrf52xMethodBase NeoNrf52xPwm typedef NeoNrf52xMethodBase NeoNrf52xPwm0Apa106Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm0800KbpsMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm0400KbpsMethod; +typedef NeoNrf52xPwm0Ws2805Method NeoNrf52xPwm0Ws2814Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm1Ws2811Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm1Ws2812xMethod; @@ -583,6 +585,7 @@ typedef NeoNrf52xMethodBase NeoNrf52xPwm typedef NeoNrf52xMethodBase NeoNrf52xPwm1Apa106Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm1800KbpsMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm1400KbpsMethod; +typedef NeoNrf52xPwm1Ws2805Method NeoNrf52xPwm1Ws2814Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm2Ws2811Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm2Ws2812xMethod; @@ -596,6 +599,7 @@ typedef NeoNrf52xMethodBase NeoNrf52xPwm typedef NeoNrf52xMethodBase NeoNrf52xPwm2Apa106Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm2800KbpsMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm2400KbpsMethod; +typedef NeoNrf52xPwm2Ws2805Method NeoNrf52xPwm2Ws2814Method; #if defined(NRF_PWM3) typedef NeoNrf52xMethodBase NeoNrf52xPwm3Ws2811Method; @@ -610,6 +614,7 @@ typedef NeoNrf52xMethodBase NeoNrf52xPwm typedef NeoNrf52xMethodBase NeoNrf52xPwm3Apa106Method; typedef NeoNrf52xMethodBase NeoNrf52xPwm3800KbpsMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm3400KbpsMethod; +typedef NeoNrf52xPwm3Ws2805Method NeoNrf52xPwm3Ws2814Method; #endif // inverted @@ -625,6 +630,7 @@ typedef NeoNrf52xMethodBase NeoN typedef NeoNrf52xMethodBase NeoNrf52xPwmNApa106InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwmN800KbpsInvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwmN400KbpsInvertedMethod; +typedef NeoNrf52xPwmNWs2805InvertedMethod NeoNrf52xPwmNWs2814InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm0Ws2811InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm0Ws2812xInvertedMethod; @@ -638,6 +644,7 @@ typedef NeoNrf52xMethodBase NeoN typedef NeoNrf52xMethodBase NeoNrf52xPwm0Apa106InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm0800KbpsInvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm0400KbpsInvertedMethod; +typedef NeoNrf52xPwm0Ws2805InvertedMethod NeoNrf52xPwm0Ws2814InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm1Ws2811InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm1Ws2812xInvertedMethod; @@ -651,6 +658,7 @@ typedef NeoNrf52xMethodBase NeoN typedef NeoNrf52xMethodBase NeoNrf52xPwm1Apa106InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm1800KbpsInvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm1400KbpsInvertedMethod; +typedef NeoNrf52xPwm1Ws2805InvertedMethod NeoNrf52xPwm1Ws2814InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm2Ws2811InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm2Ws2812xInvertedMethod; @@ -664,6 +672,7 @@ typedef NeoNrf52xMethodBase NeoN typedef NeoNrf52xMethodBase NeoNrf52xPwm2Apa106InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm2800KbpsInvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm2400KbpsInvertedMethod; +typedef NeoNrf52xPwm2Ws2805InvertedMethod NeoNrf52xPwm2Ws2814InvertedMethod; #if defined(NRF_PWM3) typedef NeoNrf52xMethodBase NeoNrf52xPwm3Ws2811InvertedMethod; @@ -678,6 +687,7 @@ typedef NeoNrf52xMethodBase NeoN typedef NeoNrf52xMethodBase NeoNrf52xPwm3Apa106InvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm3800KbpsInvertedMethod; typedef NeoNrf52xMethodBase NeoNrf52xPwm3400KbpsInvertedMethod; +typedef NeoNrf52xPwm3Ws2805InvertedMethod NeoNrf52xPwm3Ws2814InvertedMethod; #endif // defaults @@ -687,6 +697,7 @@ typedef NeoNrf52xPwm2800KbpsMethod NeoWs2812Method; typedef NeoNrf52xPwm2Ws2812xMethod NeoWs2811Method; typedef NeoNrf52xPwm2Ws2812xMethod NeoWs2816Method; typedef NeoNrf52xPwm2Ws2805Method NeoWs2805Method; +typedef NeoNrf52xPwm2Ws2814Method NeoWs2814Method; typedef NeoNrf52xPwm2Sk6812Method NeoSk6812Method; typedef NeoNrf52xPwm2Tm1814Method NeoTm1814Method; typedef NeoNrf52xPwm2Tm1829Method NeoTm1829Method; @@ -704,6 +715,7 @@ typedef NeoNrf52xPwm2Ws2812xInvertedMethod NeoWs2811InvertedMethod; typedef NeoNrf52xPwm2800KbpsInvertedMethod NeoWs2812InvertedMethod; typedef NeoNrf52xPwm2Ws2812xInvertedMethod NeoWs2816InvertedMethod; typedef NeoNrf52xPwm2Ws2805InvertedMethod NeoWs2805InvertedMethod; +typedef NeoNrf52xPwm2Ws2814InvertedMethod NeoWs2814InvertedMethod; typedef NeoNrf52xPwm2Sk6812InvertedMethod NeoSk6812InvertedMethod; typedef NeoNrf52xPwm2Tm1814InvertedMethod NeoTm1814InvertedMethod; typedef NeoNrf52xPwm2Tm1829InvertedMethod NeoTm1829InvertedMethod; diff --git a/src/internal/methods/Rp2040/NeoRp2040PioSpeed.h b/src/internal/methods/Rp2040/NeoRp2040PioSpeed.h index d21668b..bb0ac68 100644 --- a/src/internal/methods/Rp2040/NeoRp2040PioSpeed.h +++ b/src/internal/methods/Rp2040/NeoRp2040PioSpeed.h @@ -47,8 +47,8 @@ public: class NeoRp2040PioSpeedWs2805 : public NeoRp2040PioMonoProgram { public: - static constexpr float BitRateHz = 588235.29f; // 350+1350 - static constexpr uint32_t ResetTimeUs = 300; + static constexpr float BitRateHz = 917431.19f; // 300+790 + static constexpr uint32_t ResetTimeUs = 300; // spec is 280, intentionally longer for compatiblity use }; class NeoRp2040PioSpeedSk6812 : public NeoRp2040PioMonoProgram diff --git a/src/internal/methods/Rp2040/NeoRp2040x4Method.h b/src/internal/methods/Rp2040/NeoRp2040x4Method.h index ec34338..d9059fa 100644 --- a/src/internal/methods/Rp2040/NeoRp2040x4Method.h +++ b/src/internal/methods/Rp2040/NeoRp2040x4Method.h @@ -326,6 +326,7 @@ typedef NeoRp2040x4MethodBase Rp typedef NeoRp2040x4MethodBase Rp2040x4NGs1903Method; typedef NeoRp2040x4MethodBase Rp2040x4N800KbpsMethod; typedef NeoRp2040x4MethodBase Rp2040x4N400KbpsMethod; +typedef Rp2040x4NWs2805Method Rp2040x4NWs2814Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio0Ws2811Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio0Ws2812xMethod; @@ -340,6 +341,7 @@ typedef NeoRp2040x4MethodBase Rp typedef NeoRp2040x4MethodBase Rp2040x4Pio0Gs1903Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio0800KbpsMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio0400KbpsMethod; +typedef Rp2040x4Pio0Ws2805Method Rp2040x4Pio0Ws2814Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio1Ws2811Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio1Ws2812xMethod; @@ -354,6 +356,7 @@ typedef NeoRp2040x4MethodBase Rp typedef NeoRp2040x4MethodBase Rp2040x4Pio1Gs1903Method; typedef NeoRp2040x4MethodBase Rp2040x4Pio1800KbpsMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio1400KbpsMethod; +typedef Rp2040x4Pio1Ws2805Method Rp2040x4Pio1Ws2814Method; // inverted typedef NeoRp2040x4MethodBase Rp2040x4NWs2811InvertedMethod; @@ -369,6 +372,7 @@ typedef NeoRp2040x4MethodBase Rp2040x4NGs1903InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4N800KbpsInvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4N400KbpsInvertedMethod; +typedef Rp2040x4NWs2805InvertedMethod Rp2040x4NWs2814InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio0Ws2811InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio0Ws2812xInvertedMethod; @@ -383,6 +387,7 @@ typedef NeoRp2040x4MethodBase Rp2040x4Pio0Gs1903InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio0800KbpsInvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio0400KbpsInvertedMethod; +typedef Rp2040x4Pio0Ws2805InvertedMethod Rp2040x4Pio0Ws2814InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio1Ws2811InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio1Ws2812xInvertedMethod; @@ -397,6 +402,7 @@ typedef NeoRp2040x4MethodBase Rp2040x4Pio1Gs1903InvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio1800KbpsInvertedMethod; typedef NeoRp2040x4MethodBase Rp2040x4Pio1400KbpsInvertedMethod; +typedef Rp2040x4Pio1Ws2805InvertedMethod Rp2040x4Pio1Ws2814InvertedMethod; // PIO 1 method is the default method, and still x4 instances typedef Rp2040x4Pio1Ws2812xMethod NeoWs2813Method; @@ -405,6 +411,7 @@ typedef Rp2040x4Pio1800KbpsMethod NeoWs2812Method; typedef Rp2040x4Pio1Ws2812xMethod NeoWs2811Method; typedef Rp2040x4Pio1Ws2812xMethod NeoWs2816Method; typedef Rp2040x4Pio1Ws2805Method NeoWs2805Method; +typedef Rp2040x4Pio1Ws2814Method NeoWs2814Method; typedef Rp2040x4Pio1Sk6812Method NeoSk6812Method; typedef Rp2040x4Pio1Tm1814Method NeoTm1814Method; typedef Rp2040x4Pio1Tm1829Method NeoTm1829Method; @@ -423,6 +430,7 @@ typedef Rp2040x4Pio1Ws2812xInvertedMethod NeoWs2811InvertedMethod; typedef Rp2040x4Pio1800KbpsInvertedMethod NeoWs2812InvertedMethod; typedef Rp2040x4Pio1Ws2812xInvertedMethod NeoWs2816InvertedMethod; typedef Rp2040x4Pio1Ws2805InvertedMethod NeoWs2805InvertedMethod; +typedef Rp2040x4Pio1Ws2814InvertedMethod NeoWs2814InvertedMethod; typedef Rp2040x4Pio1Sk6812InvertedMethod NeoSk6812InvertedMethod; typedef Rp2040x4Pio1Tm1814InvertedMethod NeoTm1814InvertedMethod; typedef Rp2040x4Pio1Tm1829InvertedMethod NeoTm1829InvertedMethod;