Anton
попробовал увеличить скорость переключения до 1000 в секунду. ничего не поменялось
Dmytro
Возможно стоит отдавать побольше. Но в любом случае вот эта дополнительная робота с вочдогом не нужна. У вас же срабатывало и без esp_task_wdt_reset ?
Anton
Ну вообще да, по умолчанию один тик 10мс, если не ошибаюсь.
думаешь, при делении 0 получалось? увеличение HZ до 1000 не помогло
Void
menuconfig вырубить гавкалку. И забыть. Когда дойдет до тестов включить.
Anton
хм
Anton
if (delay_time < 10) delay_time = 10; — и больше не гавкает...
Dmytro
думаешь, при делении 0 получалось? увеличение HZ до 1000 не помогло
Там-то точно 0 получилось, но не знаю к чему это приводит. Возможно в вашем случае тогда taskYIELD (); нужен, а не delay
Anton
делей для выравнивания, чтобы один "кадр" был ровно 100 мс
Void
С тасками делай это пипец как не нормально.
Anton
в плане?
Anton
это изначально придумано для анимации "процесс идёт"
Anton
ровно в 100мс попадать не так важно, как просто "не торопиться" и отдавать тики
Anton
то есть, это вообще не то, для чего, нарпимер, микросекундный делей в ардуино
Void
в плане?
Забыть про делай.
Anton
Забыть про делай.
с тасками то? чего вдруг?
Anton
по сути, это информация шедулеру "не трогать меня до такого-то тика"
Anton
Забыть про делай.
или у тебя моральная травма после ардуино осталась?
Anton
Не совсем
выслушаю уточнение с удовольствием
Void
или у тебя моральная травма после ардуино осталась?
Не у меня, тьфу, тьфу, тьфу, нет. Я ардуино не очень люблю. Просто вы пишите - чтобы сразу все было нормально. А это не нормально.
Void
Что скрывается за делай_мс?
Anton
попробовал увеличить скорость переключения до 1000 в секунду. ничего не поменялось
что-то странное происходит. настройка в sdkconfig Tick rate (HZ) 1000 не меняет на самом деле тик рейт...
Anton
Что скрывается за делай_мс?
где скрывается? я свой код привёл
Anton
if (delay_time < portTICK_PERIOD_MS) delay_time = portTICK_PERIOD_MS; — всё равно печатает delay: 10
Anton
лан, пойду воздухом подышу. за беседу про собаку спасибо
Dmytro
if (delay_time < portTICK_PERIOD_MS) delay_time = portTICK_PERIOD_MS; — всё равно печатает delay: 10
Если вы хотите гарантированно отдать время на отработку других тасок (в том числе и сброс WDT) - то используйте yield. Как видите, delay на мелких интервалах этим не занимается
Void
где скрывается? я свой код привёл
Соррян я что то не правильно понял вас. Криво смотрел судя по всему.
Dmytro
почему?
Каждая смена контекста (между задачами) отнимает время. А вы их количество увеличили в 10 раз. В документации espressif вроде встречались пределы, можно поискать. Когда тикрейт быстрее чем стоит - ничего просто не будет нормально работать
romanetz
Немного, впрочем. На 1khz это что-то в районе единиц %
romanetz
На 10 khz - ну, десяток, может, 15
Anton
Немного, впрочем. На 1khz это что-то в районе единиц %
в хелпе сказано, что больше 1кгц не поддерживается
Anton
и почему ж ресет собаки ничего не даёт?
Anton
if (delay_time < portTICK_PERIOD_MS) taskYIELD(); else vTaskDelay(delay_time / portTICK_PERIOD_MS); срабатывает собака
Slava
и почему ж ресет собаки ничего не даёт?
похухлил... для esp32 https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/Timer/WatchdogTimer/WatchdogTimer.ino
Anton
и? унутре там что? что делать надо?
Anton
я ж не пользуюсь ардуино-фреймворком
Slava
ок
Anton
ардуино фреймворк сделан поверх esp-idf, иногда там можно интересный код выцепить. но в случае сторожевой собаки мне вчера не удалось понять что же я делаю не так
Anton
гм. поднял тик рейт до 1000, скорость "кадра" упала где-то на половину процента, но собака перестала гавкать совсем
Anton
короче, сторожевая собака мне осталась не до конца понятной. кроме как что надо давать задаче спать хотя бы один тик, я ничего не понял. ресет через esp_task_wdt_reset(); taskYIELD(); ничего не даёт. что мне не понятно.
Anton
Вам НЕ нужно запускать и вручную сбрасывать wdt, все это автоматически происходит во freertos
вот, к примеру, у меня есть вычислительный таск, он не отдаёт управление, к примеру, эн сек. и я не хочу гавканья в это время. ресет вроде как как раз для этого
Anton
я пока что просто пытаюсь понять собаку...
I
в ESP8266 вотчдог успокаивается с помощью system_soft_wdt_feed
I
не надо reset
Dmytro
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/wdts.html#task-watchdog-timer
Andre
Вопрос по OTA, пример OTAWebUpdater. Там используется скрипт "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>" Всё бы хорошо, но если ESP используется как точка доступа (без интернета), к которой подключается телефон, то телефон не сможет загрузить файл прошивки, так как весь этот HTML не отработает, потому что не получится скачать скрипт из интернета. Как это обойти? Я не владею HTML, не говоря об ajax, js итд.
Anonymous
jquery.min.js закатай на флеш ESP32
Andre
jquery.min.js закатай на флеш ESP32
можно ли написать const char* googleScript = "всё это мясо по ссылке из https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" ?
Andre
jquery.min.js закатай на флеш ESP32
отдавать, полагаю, надо кодом вроде: server.on("/script", HTTP_GET, []() { server.sendHeader("Connection", "close"); server.send(200, "text/html", googleScript); }); ?
garik
Технически, никто не мешает отдать и из строки, но это аццкое извращение. Content-Type только надо "text/javascript". Если есть возможность переписать без jquery, лучше это сделать
Andre
Технически, никто не мешает отдать и из строки, но это аццкое извращение. Content-Type только надо "text/javascript". Если есть возможность переписать без jquery, лучше это сделать
Переписать не смогу. На HTML могу максимум простые теги использовать. Пока попробую запихать в себя скрипт, и отдавать его.
Anton
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/wdts.html#task-watchdog-timer
я ж код привёл. что в нем не так, как по документации?
garik
Ради отправки одной формы
Anton
можно ж в data положить
garik
Ради отправки одной формы
А, и прогресс бара
Anonymous
Переписать не смогу. На HTML могу максимум простые теги использовать. Пока попробую запихать в себя скрипт, и отдавать его.
Примерно так переводится function getByteArray(file){ let fileData = file.toString('hex'); let result = []; for (let i = 0; i < fileData.length; i+=2) result.push('0x'+fileData[i]+''+fileData[i+1]); return result; } // Gzip the jquery.min.js file with JS Code. const gzippedIndex = zlib.gzipSync("jquery.min.js", {'level': zlib.constants.Z_BEST_COMPRESSION}); let indexjs = getByteArray(gzippedIndex); const uint8_t WEBSERIAL_HTML[] PROGMEM = = { ${indexjs} };
romanetz
Прям файлы как есть можно закатывать в прошивку
romanetz
Я вот прям на днях так jschart закинул на веб страницу. Пример с интернета взята, нагуглил. Модифицировал - вместо http запросов через вебсокет данные пуляю
garik
Так и до npm install скоро докатимся 😄
romanetz
И сборки прошивки на самом себе? )
garik
Так и до npm install скоро докатимся 😄
Хотя, upip на есп работает нормально...
Anonymous
Там реально не нужен jquery, он только для прогресс бара. Обычная форма с одним инпутом
может кому пригодится кто зипует, переводит-конвертит и записывает html javascript на флеш esp32
garik
может кому пригодится кто зипует, переводит-конвертит и записывает html javascript на флеш esp32
Да я не против, но 86кб ради двух строчек тащить - это имхо перебор
romanetz
Да я не против, но 86кб ради двух строчек тащить - это имхо перебор
Да ладно, преждевременная оптимизация это болезнь
romanetz
Если esp32 нужен ради чего то другого, пустая флешка никакого гешефта не приносит никому, не пользователю, ни создателю
garik
Тоже верно