Страница 1 из 2
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 15:06
Bullhorse
Всем привет! Имеем ESP8266 nodemcu. В процессе постепенного обрастания проекта после определенного момента внезапно стал нестабильно работать девайс. Точнее совсем никак. Если убрать блоки вебморды, то снова работает...НО! Обнаружена связь между весом вебстранички и наличием блока чтения системных часов RTCGT. Если ручками заключить в коде ардуино строки чтения системных часов в событие if (millis() - timerReadRTC >= 10) { Чтение системных часов} (всего лишь на 10мс!!), то девайс снова начинает работать, плюс еще вебморда становится гораздо отзывчивее. Все остальные тяжелые блоки в коде ограничены выполнением раз в секунду изначально.
Диагностика: статус wifi соединения периодически изменяется
Для справки: С 54 разнообразными параметрами в веб морде работает, при добавлении еще 12 чекбоксов - нет, если не ограничить RTCGET.
Вопрос: Можно ли отредактировать RTCGET, чтобы приделать к нему EN? Или просто ограничить частоту его выполнения?
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 15:38
Dryundel
Bullhorse писал(а): 02 фев 2023, 15:06
Вопро
с: Можно ли отредактировать RTCGET, чтобы приделать к нему EN? Или про
сто ограничить ча
стоту его выполнения?
Попробуй разме
стить блок на отдельной плате и ограничивай ее.
Редактировать штатные блоки нельзя.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 16:06
Bullhorse
Сейчас так и сделал, но не ограничился этим, ибо не заработало. Сделал отдельную плату, которая формирует флаг по 500мс и сбрасываю его на плате с часами. НЕ работает! serial на плате с часами сигналит правильно 2 раза в сек, но wifi теперь вообще не поднимается. Ковыряюсь..
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 16:21
Dryundel
Bullhorse писал(а): 02 фев 2023, 16:06
Сделал отдельную плату, которая формирует флаг по 500м
с и
сбра
сываю его на плате
с часами.
Это что за плата такая заморочная?
А про
сто генератор
с R-триггером на выходе не у
строил?
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 16:46
Bullhorse
На входе Rtrig - симметричный генератор, на выходе - разрешение записи bool переменной. Плата с часами выполняется если bool = true
Отправлено спустя 12 минут 23 секунды:
Значит так. Происходит какая хрень. Если убрать то, что добавил с момента рабочего состояния - все равно не работает. Даже если поставить галочку "не компилировать плату". А вот если загрузить ранее сохраненный в рабочем состоянии проект - все отлично. К сожалению между этими двумя проектами есть небольшие отличия. Буду продолжать рабочий проект до момента возникновения ошибки.
Отправлено спустя 6 минут 53 секунды:
Есть подозрение, что каждое изменение проекта надо сохранять отдельным файлом, чтобы избежать такого и вычислить момент возникновения проблемы
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 17:38
Dryundel
Bullhorse писал(а): 02 фев 2023, 16:46
На входе Rtrig -
симметричный генератор, на выходе - разрешение запи
си bool переменной.
разрешение записи bool переменной - это лишнее. У Ва
с же R-триггер, а это единичный импуль
с на один цикл.
Про
сто переменную о
ставь и на плате по у
словию ничего не надо.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 17:59
aidar_i
Bullhorse писал(а): 02 фев 2023, 15:06
Е
сли ручками заключить в коде ардуино
строки чтения
си
стемных ча
сов в
событие if (millis() - timerReadRTC >= 10) { Чтение
си
стемных ча
сов} (в
сего лишь на 10м
с!!), то девай
с снова начинает работать, плю
с еще вебморда
становит
ся гораздо отзывчивее. В
се о
стальные тяжелые блоки в коде ограничены выполнением раз в
секунду изначально.
Е
сли у Ва
с так работает, не мучайте
сь, по
ставьте вот эти блоки, между ними по
ставьте ча
сы , как в примере.
Таймер.flp
Их можно и
спользовать и для других блоков. Период на
страивает
ся в параметре.
Штатные
серви
сы времени работают?
Я пользую
сь этими
https://www.ntp-servers.net/servers.html
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 20:00
Bullhorse
aidar_i писал(а): 02 фев 2023, 17:59
по
ставьте вот эти блоки
Спа
сибо! Это отличное решение. Еще пригодит
ся. Е
сли ра
сположить эти блоки, учитывая порядок компиляции, то не обязательно на разных платах их держать.
Вот только в проекте из первого по
ста это пере
стало работать. Какая-то по
следовательно
сть дей
ствий из удаления/добавления блоков приводит
сам проект в нерабочее
со
стояние. Второй раз такое
случило
сь. Вот в
со
седней теме
с другими глюками бил
ся. Имея нехорошую привычку
создавать кучу копий на разных этапах
создания проекта для
случаев различной реализации, е
сть подозрения, что по
сле паузы над проектом я подгрузил не по
следний вариант для продолжения. Вот и
сейча
с сижу, потихоньку накидываю заново то же
самое, компилю по
сле каждого изменения...
Штатные
серви
сы времени не работают. Пользую
сь такими же.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 02 фев 2023, 20:11
aidar_i
Bullhorse писал(а): 02 фев 2023, 20:00
Вот только в проекте из первого по
ста это пере
стало работать.
Внутри этих блоков лучше не ра
сполагайте другие блоки кроме ча
сов. Лучше их в других платах, а выходы и входы
соединяйте
с помощью клеммы или переменных.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 00:13
Bullhorse
И так, господа, готов выкатить баг. Путем постепенного добавления в морду пользовательских параметров и 40 компиляций, наконец-то уперся в нерабочие параметры.
В пользовательских параметрах сохраняю кучу переменных типа bool, byte, int. И при обращении к седьмому или восьмому параметру по списку сверху вниз типа bool, не считая остальные параметры, вебморда падает. Причем если какой-то bool сверху превратить в byte, то список сдвигается на один параметр. Обнаружено, что при использовании "плохого" параметра, FLPROG тупо не вставляет эту переменную в код.
[spoiler=это не работает]
}
ESP8266_freeParam_248193119 = readBooleanFromEEPROM(1, 0, 0x0);
ESP8266_freeParam_140262932 = readBooleanFromEEPROM(1, 1, 0x0);
ESP8266_freeParam_122176158 = readBooleanFromEEPROM(1, 2, 0x0);
ESP8266_freeParam_249955702 = readBooleanFromEEPROM(1, 3, 0x0);
ESP8266_freeParam_185280663 = readBooleanFromEEPROM(1, 4, 0x0);
ESP8266_freeParam_134621365 = readBooleanFromEEPROM(1, 5, 0x0);
ESP8266_freeParam_190589504 = readBooleanFromEEPROM(1, 6, 0x0);
ESP8266_freeParam_13153615 = readBooleanFromEEPROM(1, 7, 0x0);
ESP8266_freeParam_44513526 = readStingFromEEPROM(2,80,0x0);
ESP8266_freeParam_153693250 = readByteFromEEPROM(82,0,0x0);
[/spoiler]
[spoiler=А это работает]
ESP8266_freeParam_248193119 = readBooleanFromEEPROM(1, 0, 0x0);
ESP8266_freeParam_140262932 = readBooleanFromEEPROM(1, 1, 0x0);
ESP8266_freeParam_122176158 = readBooleanFromEEPROM(1, 2, 0x0);
ESP8266_freeParam_249955702 = readBooleanFromEEPROM(1, 3, 0x0);
ESP8266_freeParam_185280663 = readBooleanFromEEPROM(1, 4, 0x0);
ESP8266_freeParam_134621365 = readBooleanFromEEPROM(1, 5, 0x0);
ESP8266_freeParam_190589504 = readBooleanFromEEPROM(1, 6, 0x0);
ESP8266_freeParam_13153615 = readBooleanFromEEPROM(1, 7, 0x0);
ESP8266_freeParam_82982671 = readBooleanFromEEPROM(2, 0, 0x0);
ESP8266_freeParam_44513526 = readStingFromEEPROM(3,80,0x0);
ESP8266_freeParam_153693250 = readByteFromEEPROM(83,0,0x0);
[/spoiler]
Отличия в одной строчке.
А всего лишь в конструкторе интерфейса заменяю используемую bool переменную стоящую на седьмом или восьмом месте на девятую и так далее
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 01:19
artemka19
а стринги есть в параметрах?
там прост не менее 26 символов длину для них нужно указывать
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 02:11
Bullhorse
artemka19 писал(а): 03 фев 2023, 01:19
не менее 26
символов
вот блин. Точно же. Один параметр меньше оказал
ся. Заработало ) Спа
сибо!
Отправлено спустя 23 минуты 56 секунд:
Ненадолго.. упер
ся в
следующий параметр. Не работает.
Может е
сть какие-то правила выравнивания? Как у owen
с реги
страми, например..
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 03:11
Ingwar
Возможно не в тему, но если проект большой, то что там с оперативкой? Не знаю как на ESP, но на AVR-ках при заполнении оперативки более 59% возможны "нежданчики" (из личного опыта).
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 12:59
Bullhorse
FLProg ве
сьма бе
спощадно отно
сит
ся к оперативке, в родных блоках там где byte было бы до
статочно торчит int. Жирный пользовател
ський блок? - Держи
структуру. В полученный код не вникал пока работает, но
проблема будущей фрагментации напрягает..
[spoiler]
. Variables and constants in RAM (global, static), used 42496 / 80192 bytes (52%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1628 initialized variables
╠══ RODATA 13508 constants
╚══ BSS 27360 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 59847 / 65536 bytes (91%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 27079 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 299932 / 1048576 bytes (28%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 299932 code in flash
[/spoiler]
На esp32
собирать не хочу. Был негативный опыт
с модулем wt32-eth01. Проблема
сбро
са при подаче питания о
стала
сь для меня нерешенной. Прицепишь к ногам не
сколько пу
стых дюпонов по 10
см - оно не
стартует. Нагреешь
стабилизатор LM1117 на плате -
стартует. Замена не помогает. Даешь внешние 3,3v: е
сли через выключатель - не
стартует. В конце концов о
становил
ся на подаче питания 220в на цепочку блоков питания 220В>5В>3.3В

Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 16:42
artemka19
Bullhorse писал(а): 03 фев 2023, 12:59
там где byte было бы до
статочно торчит int
например?
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 18:53
aidar_i
artemka19 писал(а): 03 фев 2023, 16:42
Bullhorse писал(а): 03 фев 2023, 12:59
там где byte было бы до
статочно торчит int
например?
Е
сли это int в параметрах, то проблем нет! Е
сли это в коде вме
сто byte
стоит int, то да.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 19:05
artemka19
[ref=#ff8000]aidar_i[/ref], а где такое? в каком блоке?
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 19:40
aidar_i
artemka19 писал(а): 03 фев 2023, 19:05
[ref=#ff8000]aidar_i[/ref], а где такое? в каком блоке?
В любом штатном или ПБ.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 03 фев 2023, 21:39
Bullhorse
artemka19 писал(а): 03 фев 2023, 16:42
например?
например DMUX. Или DMS? (демультиплек
сор) Но в ма
сштабах моей проблемы это очень маленькая фигня.
Поэк
спериментировал
с прогой. Грешил, что мой пользователь
ский блок
с внутренним размером
с пару экранов и
старательно размноженный еще на три экрана (а надо еще на три), жрёт много памяти.. оказало
сь, к че
сти автора FLPROG, что удаление одного блока уменьшает размер памяти примерно на количе
ство входных и выходных переменных, и получаемый код блока даже
содержит указатели.
А вот удаление одной
страницы из вебморды приводит к о
свобождению примерно чуть более килобайта оперативы, а удаление вебинтерфей
са о
свобождает аж 10кб.
В общем надеял
ся пропетлять.. пытал
ся не и
спользовать "запретные" переменные,
создавая дополнительные. Это даже работает до какой-то
степени)). Но потом оказало
сь, что "запретной"
стала переменная не хранящая
ся в EEPROM...... Вот
соб
сно и в
сё. Создать новую и воткнуть её в то же
самое ме
сто результат не прино
сит. Удаление
своих кривых
стилей
страницы, удаление доп
страниц - вот результат. И это пока будет цель. Мне нужно выве
сти пол
сотни параметров в морду. Уже принципиально. На 8266. На ESP32 уже по
смотрел (там 12% оперативы мой проект занимает). Но пока 8266.
Проблема в ESP8266 системных часов и тяжелой веб морды
Добавлено: 04 фев 2023, 01:48
artemka19
aidar_i писал(а): 02 фев 2023, 15:06любом
в
смы
сле в любом?
там же е
сть выбор типа переменной
Отправлено спустя 2 минуты 38 секунд:
Bullhorse писал(а): 03 фев 2023, 21:39
нужно выве
сти пол
сотни параметров в морду
да хоть 500)))
в чем
проблема то непонятно