Closed
Description
Hi
So my project : ESP12E Wemos D1 mini, 4 Mo, core 2.7.4, Sloeber env. on Windows7
Problem : My code work perfectly with core 2.7.4 and crash with 3.0.2. The crash is always around the same place : in the interrupt of the timer1. In short, I made a dimer : when I have the zero cross interrupt, I start the timer1 to activate the SSR relay for a delay.
I really made hundred of try but always the same problem.
Any ideas are welcome :)
Regards,
Lionel
The relevant code is :
#define SSR_TURN_ON_us 50
uint8_t SSR_PIN;
int8_t LED_PIN = -1;
static bool Top_CS_ZC = false;
static volatile bool Tim_Interrupt_Enabled = false;
static volatile bool Is_SSR_enabled = false;
static volatile float SSR_COUNT = 0.0;
// Send SSR pulse after delay
void IRAM_ATTR onTimerSSR(void)
{
if (Is_SSR_enabled)
{
if (Top_CS_ZC)
{
digitalWrite(SSR_PIN, HIGH);
Top_CS_ZC = false;
Timer_SSR.setInterval(SSR_TURN_ON_us);
Timer_SSR.startTimer();
}
else
{
digitalWrite(SSR_PIN, LOW);
if (LED_PIN != -1)
digitalWrite(LED_PIN, HIGH);
}
}
}
// Zero cross was fired
void IRAM_ATTR onZC(void)
{
Count_CS_ZC++;
if (Is_SSR_enabled && Tim_Interrupt_Enabled)
{
if (LED_PIN != -1)
digitalWrite(LED_PIN, LOW);
Top_CS_ZC = true;
Timer_SSR.setInterval(SSR_COUNT);
Timer_SSR.startTimer(); <------------------- here is the line 120
}
}
void IRAM_ATTR startTimer(void)
{
timer1_write(_timerCount);
timer1_enable(TIM_DIV, TIM_EDGE, _loop);
}
The dump crash stack is :
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x4010127c: timer1_isr_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_timer.cpp line 37
0x401002af: onTimerSSR() at E:\Sloeber\Sloeber_library\SSR\SSR.cpp line 120
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x401012c4: timer1_isr_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_timer.cpp line 44
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x40100fd6: __wrap_spi_flash_read(uint32_t, uint32_t*, size_t) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_phy.cpp line 309
0x402159c0: EspClass::flashRead(unsigned int, unsigned int*, unsigned int) at ...\esp8266\3.0.2\cores\esp8266\Esp.cpp line 954
0x40215a47: EspClass::flashRead(unsigned int, unsigned char*, unsigned int) at ...\esp8266\3.0.2\cores\esp8266\Esp.cpp line 933
0x40100fd6: __wrap_spi_flash_read(uint32_t, uint32_t*, size_t) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_phy.cpp line 309
0x402159c0: EspClass::flashRead(unsigned int, unsigned int*, unsigned int) at ...\esp8266\3.0.2\cores\esp8266\Esp.cpp line 954
0x40215a47: EspClass::flashRead(unsigned int, unsigned char*, unsigned int) at ...\esp8266\3.0.2\cores\esp8266\Esp.cpp line 933
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x40101578: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 138
0x40211997: littlefs_impl::LittleFSImpl::lfs_flash_read(lfs_config const*, unsigned int, unsigned int, void*, unsigned int) at ...\esp8266\3.0.2\libraries\LittleFS\src\LittleFS.cpp line 171
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x40101638: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 167
0x40211988: littlefs_impl::LittleFSImpl::lfs_flash_read(lfs_config const*, unsigned int, unsigned int, void*, unsigned int) at ...\esp8266\3.0.2\libraries\LittleFS\src\LittleFS.cpp line 169
0x40101578: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 138
0x402019db: lfs_dir_fetchmatch at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 975
0x402019c4: lfs_dir_fetchmatch at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 964
0x4021901a: __yield() at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_main.cpp line 116
0x4021a425: flash_hal_read(unsigned int, unsigned int, unsigned char*) at ...\esp8266\3.0.2\cores\esp8266\flash_hal.cpp line 36
0x402119a6: littlefs_impl::LittleFSImpl::lfs_flash_read(lfs_config const*, unsigned int, unsigned int, void*, unsigned int) at ...\esp8266\3.0.2\libraries\LittleFS\src\LittleFS.cpp line 171
0x40201330: lfs_bd_read at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 101
0x402018a2: lfs_dir_fetchmatch at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 891
0x4021a425: flash_hal_read(unsigned int, unsigned int, unsigned char*) at ...\esp8266\3.0.2\cores\esp8266\flash_hal.cpp line 36
0x40201e90: lfs_dir_find at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 1238
0x402020f4: lfs_dir_find_match at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 1140
0x40204262: lfs_file_rawopencfg at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 2472
0x4010095b: umm_free_core(umm_heap_context_t*, void*) at ...\esp8266\3.0.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 549
0x40221370: _strdup_r at /workdir/repo/newlib/newlib/libc/string/strdup_r.c line 10
0x40204ce9: lfs_file_open at ...\esp8266\3.0.2\libraries\littlefs\lib\littlefs/lfs.c line 5058
0x4021228e: littlefs_impl::LittleFSImpl::open(char const*, fs::OpenMode, fs::AccessMode) at ...\esp8266\3.0.2\libraries\LittleFS\src\LittleFS.cpp line 85
0x40101654: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 175
0x40101638: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 167
0x40101578: interrupt_handler(void*, void*) at ...\esp8266\3.0.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 138
Metadata
Metadata
Assignees
Labels
No labels