diff --git a/NeoPixelBus.cpp b/NeoPixelBus.cpp index cd67645..ffc777f 100644 --- a/NeoPixelBus.cpp +++ b/NeoPixelBus.cpp @@ -74,39 +74,41 @@ void NeoPixelBus::Begin(void) } #if defined(ESP8266) -#pragma optimize( "", off ) -void send_ws_0_800(uint8_t gpio) { +void ICACHE_FLASH_ATTR send_ws_0_800(uint8_t gpio) { uint8_t i; i = 4; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1 << gpio); - i = 6; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1 << gpio); + i = 7; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1 << gpio); } -void send_ws_1_800(uint8_t gpio) { +void ICACHE_FLASH_ATTR send_ws_1_800(uint8_t gpio) { uint8_t i; i = 9; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1 << gpio); i = 2; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1 << gpio); } -void send_ws_0_400(uint8_t gpio) { +void ICACHE_FLASH_ATTR send_ws_0_400(uint8_t gpio) { uint8_t i; i = 8; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1 << gpio); i = 12; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1 << gpio); } -void send_ws_1_400(uint8_t gpio) { +void ICACHE_FLASH_ATTR send_ws_1_400(uint8_t gpio) { uint8_t i; i = 18; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1 << gpio); i = 4; while (i--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, 1 << gpio); } -#pragma optimize( "", on ) + #endif #if defined(ESP8266) -#pragma optimize( "", off ) -#endif + +void ICACHE_FLASH_ATTR NeoPixelBus::Show(void) + +#else void NeoPixelBus::Show(void) +#endif { if (!_pixels) return;