diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 5b2497eb5..450ef7859 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,6 +3,7 @@ * Add LED GPIO option "LedLink" (157) and "LedLinki" (158) to select dedicated link status LED (#5709) * Add support for up to four LEDs related to four power outputs. Enabled when "LedLink(i)" is configured too (#5709) * Add extended LED power control using command LedPowerX where X is 1 to 4. Enabled when "LedLink(i)" is configured too (#5709) + * Fix core 2.5.x ISR not in IRAM exception (#5837) * * 6.5.0.11 20190517 * Add command SetOption64 0/1 to switch between "-" or "_" as sensor index separator impacting DS18X20, DHT, BMP and SHT3X sensor names (#5689) diff --git a/sonoff/support_rotary.ino b/sonoff/support_rotary.ino index c04889a3f..35974251b 100644 --- a/sonoff/support_rotary.ino +++ b/sonoff/support_rotary.ino @@ -61,6 +61,10 @@ void update_position(void) rotary_state = (s >> 2); } +#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 // Fix core 2.5.x ISR not in IRAM Exception +void update_rotary(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +#endif // ARDUINO_ESP8266_RELEASE_2_3_0 + void update_rotary(void) { if (MI_DESK_LAMP == my_module_type){ diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 90b4f872e..17a0806bb 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -1005,8 +1005,8 @@ unsigned int arilux_rf_repeat_count = 0; uint8_t arilux_rf_toggle = 0; -#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 -#ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves RF misses +#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 // Fix core 2.5.x ISR not in IRAM Exception +#ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves RF misses void AriluxRfInterrupt(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too #endif // USE_WS2812_DMA #endif // ARDUINO_ESP8266_RELEASE_2_3_0 diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index d2da0e3a7..c098870e4 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -68,6 +68,7 @@ uint8_t hlw_model_type = 0; uint8_t hlw_load_off = 1; uint8_t hlw_cf1_timer = 0; +// Fix core 2.5.x ISR not in IRAM Exception #ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves exception void HlwCfInterrupt(void) ICACHE_RAM_ATTR; void HlwCf1Interrupt(void) ICACHE_RAM_ATTR; diff --git a/sonoff/xsns_01_counter.ino b/sonoff/xsns_01_counter.ino index 576f868ff..069016a87 100644 --- a/sonoff/xsns_01_counter.ino +++ b/sonoff/xsns_01_counter.ino @@ -40,6 +40,13 @@ void CounterUpdate(uint8_t index) } } +#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 // Fix core 2.5.x ISR not in IRAM Exception +void CounterUpdate1(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +void CounterUpdate2(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +void CounterUpdate3(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +void CounterUpdate4(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +#endif // ARDUINO_ESP8266_RELEASE_2_3_0 + void CounterUpdate1(void) { CounterUpdate(1); diff --git a/sonoff/xsns_35_tx20.ino b/sonoff/xsns_35_tx20.ino index b5e8a2091..05d3cbd8b 100644 --- a/sonoff/xsns_35_tx20.ino +++ b/sonoff/xsns_35_tx20.ino @@ -80,6 +80,10 @@ uint8_t tx20_wind_direction = 0; bool tx20_available = false; +#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 // Fix core 2.5.x ISR not in IRAM Exception +void Tx20StartRead(void) ICACHE_RAM_ATTR; // As iram is tight and it works this way too +#endif // ARDUINO_ESP8266_RELEASE_2_3_0 + void Tx20StartRead(void) { /* La Crosse TX20 Anemometer datagram every 2 seconds