Работая над кодом метеостанции я протестировал некоторые варианты сохранения значений переменных, которые задаются по воздуху - через Wi-Fi.
Потом я занялся подключением других датчиков в схему метеостанции, в которых не было необходимости в сохранении значений переменных через Wi-Fi. После возврата к старому ранее работавшему скетчу выяснилось, что он и его варианты перестали работать, а именно: после загрузки в ESP на монитор Arduino IDE выводится сообщение: wdt reset.
На этом форуме прочитал, что причиной wdt reset может быть:
В этом скетче я максимально уменьшил количество переменных и упростил код. Глобальные переменные используют 39972 байт (48%) динамической памяти, оставляя 41948 байт для локальных переменных.
Скетч работает, если в коде закомментировать строку 220 : strcpy(mail_address, json["mail_address"]);
Причиной этой проблемы может быть автообновление библиотек в Arduino IDE, которое я остановил с опозданием. Тестирование скетча со старыми версиями некоторых библиотек ничего не дало - как только расскомметирую строку 220 strcpy(mail_address, json["mail_address"]), то все то же - wdt reset. Не могу сообразить - как выйти на работающую комбинацию разных версий библиотек, если причина проблемы в библиотеках.
Ниже - информация с монитора Arduino IDE при загрузке проблемного скетча и декодировка стека, которая мне ни о чем не говорит. Возможно она что-то прояснит.
Что думаете?
стек:
Потом я занялся подключением других датчиков в схему метеостанции, в которых не было необходимости в сохранении значений переменных через Wi-Fi. После возврата к старому ранее работавшему скетчу выяснилось, что он и его варианты перестали работать, а именно: после загрузки в ESP на монитор Arduino IDE выводится сообщение: wdt reset.
На этом форуме прочитал, что причиной wdt reset может быть:
- переполнение оперативной памяти,
- кривые или "прожорливые" библиотеки,
- кривой пользовательский код,
- слишком навороченная программа, с которой ESP не справляется.
В этом скетче я максимально уменьшил количество переменных и упростил код. Глобальные переменные используют 39972 байт (48%) динамической памяти, оставляя 41948 байт для локальных переменных.
Скетч работает, если в коде закомментировать строку 220 : strcpy(mail_address, json["mail_address"]);
Причиной этой проблемы может быть автообновление библиотек в Arduino IDE, которое я остановил с опозданием. Тестирование скетча со старыми версиями некоторых библиотек ничего не дало - как только расскомметирую строку 220 strcpy(mail_address, json["mail_address"]), то все то же - wdt reset. Не могу сообразить - как выйти на работающую комбинацию разных версий библиотек, если причина проблемы в библиотеках.
Ниже - информация с монитора Arduino IDE при загрузке проблемного скетча и декодировка стека, которая мне ни о чем не говорит. Возможно она что-то прояснит.
Что думаете?
Код:
⸮*WM: Adding parameter
*WM: blynk_token
*WM: Adding parameter
*WM: mail_address
*WM:
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.1.103
WiFi connected
IP address: 192.168.1.103
Load config...
Exception (28):
epc1=0x4000bf0e epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: cont
sp: 3fff0f30 end: 3fff1230 offset: 01a0
>>>stack>>>
3fff10d0: 3fffdad0 3fff0148 3fff2a34 4020c5e9
3fff10e0: 3ffe89d8 3fff10e0 3fff10ec 3fff10fc
3fff10f0: 3fff2a34 00000002 3fff2a41 00000000
3fff1100: 3fff2a51 00000002 3fff2a5d 40201c2c
3fff1110: 00000018 00000008 3ffefa44 40201d40
3fff1120: 3ffeffa8 3ffefa44 3ffefaa8 402015c9
3fff1130: 3fff1180 00000000 3ffefa44 4020ba34
3fff1140: 00000009 00000011 3fff0148 40201e06
3fff1150: 19082e00 00ffffff 0101a8c0 00000000
3fff1160: 00000007 0000000f 3ffefa44 40201ea3
3fff1170: 00000007 00000007 3ffefa44 4020ba64
3fff1180: 3ffeff48 00070010 3ffefa44 40201834
3fff1190: 3fff1b76 0000005a 3ffefa44 3fff0204
3fff11a0: 3fffdad0 00000010 3ffefa44 00000028
3fff11b0: 3ffe9490 00000000 000003e8 4010020c
3fff11c0: 3fff29f4 3fff1b6c 3fff11f0 4010068c
3fff11d0: 3ffe889c 3ffe889c 3ffefa44 3fff0204
3fff11e0: 3fffdad0 3ffe889c 3fff0148 4020d231
3fff11f0: 00000000 00000000 00000000 feefeffe
3fff1200: feefeffe feefeffe feefeffe 3fff0204
3fff1210: 3fffdad0 00000000 3fff01fc 40214efc
3fff1220: feefeffe feefeffe 3fff0210 40100718
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(1,3)
ets Jan 8 2013,rst cause:4, boot mode:(1,3)
wdt reset
Код:
Decoding 14 results
0x4020c5e9: get at D:\Users\VB\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonObject.ipp line 23
: (inlined by) as at D:\Users\VB\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/JsonObjectSubscript.hpp line 45
: (inlined by) as at D:\Users\VB\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/Internals/../JsonVariantBase.hpp line 64
: (inlined by) ArduinoJson::JsonVariantBase >::operator char const*() const at D:\Users\VB\Documents\Arduino\libraries\ArduinoJson\src/../include/ArduinoJson/Internals/../JsonVariantBase.hpp line 45
: (inlined by) loadConfig() at D:\Users\VB\Documents\Arduino\OLED_Blynk_4t/OLED_Blynk_4t.ino line 220
0x40201c2c: u8x8_i2c_data_transfer at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_cad.c line 382
0x40201d40: u8x8_cad_ssd13xx_i2c at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_cad.c line 432
0x402015c9: u8g2_font_decode_glyph at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8g2_font.c line 880
0x4020ba34: u8x8_cad_EndTransfer at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_cad.c line 111
0x40201e06: u8x8_d_ssd1306_sh1106_generic at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_d_ssd1306_128x64_noname.c line 220
0x40201ea3: u8x8_d_ssd1306_128x64_noname at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_d_ssd1306_128x64_noname.c line 252
0x4020ba64: u8x8_DrawTile at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8x8_display.c line 116
0x40201834: u8g2_draw_string at D:\Users\VB\Documents\Arduino\libraries\U8g2lib/u8g2_font.c line 880
0x4010020c: _umm_free at C:\Users\VB\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\cores\esp8266\umm_malloc/umm_malloc.c line 1287
0x4010068c: free at C:\Users\VB\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\cores\esp8266\umm_malloc/umm_malloc.c line 1733
0x4020d231: setup at D:\Users\VB\Documents\Arduino\OLED_Blynk_4t/OLED_Blynk_4t.ino line 309
0x40214efc: loop_wrapper at C:\Users\VB\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\cores\esp8266/core_esp8266_main.cpp line 56
0x40100718: cont_norm at C:\Users\VB\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0-rc2\cores\esp8266/cont.S line 109
Последнее редактирование: