• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь esp8266, обновил менеджер плат до 2.5.2...

stvts

New member
Приветствую уважаемое сообщество! Собственно, в Arduino обновил менеджер плат до версии 2.5.2 (до обновления 2.5.0). Проект с компилировался и загрузился, но в мониторе сообщение ISR not in IRAM!. Стек декодируется следующими сообщениями:
Decoding stack results
0x401001b8: millis() at C:\Users\Stas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_wiring.cpp line 186
0x40201038: handleInterrupt() at C:\Users\Stas\Documents\Arduino\OpenTherm_thermostat_v6.01_WEB/OpenTherm_thermostat_v6.01_WEB.ino line 207
0x401004be: __attachInterrupt(uint8_t, voidFuncPtr, int) at C:\Users\Stas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 206
0x4020c6f4: OpenTherm::begin(void (*)(), void (*)(unsigned long, OpenThermResponseStatus)) at C:\Users\Stas\Documents\Arduino\libraries\opentherm_library-master\src\OpenTherm.cpp line 28
0x4020c720: OpenTherm::begin(void (*)()) at C:\Users\Stas\Documents\Arduino\libraries\opentherm_library-master\src\OpenTherm.cpp line 36
0x4020390e: setup() at C:\Users\Stas\Documents\Arduino\OpenTherm_thermostat_v6.01_WEB/OpenTherm_thermostat_v6.01_WEB.ino line 633
0x40201018: saveConfigCallback() at C:\Users\Stas\Documents\Arduino\OpenTherm_thermostat_v6.01_WEB/OpenTherm_thermostat_v6.01_WEB.ino line 424
0x402011e0: std::_Function_handler::_M_invoke(const std::_Any_data &) at c:\users\stas\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 2069
0x40210124: loop_wrapper() at C:\Users\Stas\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_main.cpp line 122
Что произошло и что не переварил мой esp8266 NodeMCU, флеш 4мб?
 

enjoynering

Well-known member
все функции вызываемые по прерываниям теперь через атрибут ICACHE_RAM_ATTR

Код:
void ICACHE_RAM_ATTR encoderISR()  //interrupt service routines need to be in ram
{
//ISR CODE HERE
}
а вообще стыдно гражданин, первый же запрос в GOOGLE - "ISR not in IRAM!" ведет к ответу.
 

stvts

New member
Благодарю! Да, собственно, стыдиться нет оснований. За GOOGLE отдельное спасибо!!! Свою проблему решил.
 
Сверху Снизу