Denis
камера использует и2эс...
Василий
Василий
The devices have two embedded watchdog peripherals which offer a combination of high
safety level, timing accuracy and flexibility of use. Both watchdog peripherals (Independent
and Window) serve to detect and resolve malfunctions due to software failure, and to trigger
system reset or an interrupt (window watchdog only) when the counter reaches a given
timeout value
Василий
от понабирают по обьявлениям
Василий
.....
Василий
вырезку даже дам
Василий
Василий
не вижу в упор рекомендацию юзать для ручного рестарта
Василий
для ошибок работы - да
Василий
странно, но походу общий уровень знаний все же в этом чате на уровне ардуинок....
Evgeniy
Вот такое должно быть: rst:0xc (SW_CPU_RESET)
Василий
а я то думал....
Василий
Василий
=)
Evgeniy
Это после OTA, через браузер, потом ничего не виснит
Василий
так то и свет можно в комнате выключать суя в розетку гвоздь и включать заново автоматом - но зачем?
Василий
и лупить себе самому по голове?)
Василий
не, ищите более изощренный способ)
Evgeniy
соплей между сосденим пином и rst)
Василий
да, юзают такое
Василий
по факту человеку так и не помогли, но наболтали))))
Василий
я бы порекомендовал просто спрыгивать с ардуины - там многие вещи через одно место
Alexey
Alexey
Alexey
Василий
а зачем прослойки? для чего?
Alexey
после загрузки такое сообщение и отображается, а толку-то?
Василий
просто жрать ресурс?)
Alexey
а зачем прослойки? для чего?
мы уходим от сути вопроса. Вопрос не в уровне абстракций, а в том, как правильно сделать полноценный ребут
Василий
мне проще либы юзать готовые на си.....
Василий
можно подшаманить)
Василий
ай не, тут до сути длиннее путь получается
Василий
щас покажу)
Alexey
это пустая демагогия. исходники одинаково везде доступны, вне зависимости от фреймворка. ребут как сделать правильно?
Василий
Василий
пробуйте дергать вот это.
Василий
и есть разные резеты
Василий
кстати
Василий
3 уровня)
Василий
Denis
esp_register_shutdown_handler()предусмотрена функция регистрации подпрограммы, которая должна быть вызвана до перезапуска
Василий
Василий
вобщем маны все есть
Василий
читайте доки.
Denis
можна прописать деинициализацию
Василий
пример рестарта из загрузчика кстати
Василий
void bootloader_reset(void)
{
#ifdef BOOTLOADER_BUILD
bootloader_atexit();
esp_rom_delay_us(1000); /* Allow last byte to leave FIFO */
REG_WRITE(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_SW_SYS_RST);
while (1)
{
} /* This line will never be reached, used to keep gcc happy */
#else
abort(); /* This function should really not be called from application code */
#endif
}
Василий
дернуть мною указанный регистр
Василий
RTC_CNTL_SW_SYS_RST
Василий
всё, и ждать)
Василий
там по сути перед дерганием рестарта можно положить ожидание завершения задачек каких
Василий
чтобы прям кошерно ребутнуться
Василий
а можно молотком в регистр дать - и все перезапустится
Василий
вот кстати в IDF рестарт void IRAM_ATTR esp_restart_noos_dig(void)
{
// make sure all the panic handler output is sent from UART FIFO
if (CONFIG_ESP_CONSOLE_UART_NUM >= 0) {
esp_rom_uart_tx_wait_idle(CONFIG_ESP_CONSOLE_UART_NUM);
}
// switch to XTAL (otherwise we will keep running from the PLL)
rtc_clk_cpu_freq_set_xtal();
#if CONFIG_IDF_TARGET_ESP32
esp_cpu_unstall(PRO_CPU_NUM);
#endif
// reset the digital part
SET_PERI_REG_MASK(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_SW_SYS_RST);
while (true) {
;
}
}
Василий
если с осью - то там ждет завершения задачек и дергает эту же функцию
Василий
void IRAM_ATTR esp_restart(void)
{
for (int i = SHUTDOWN_HANDLERS_NO - 1; i >= 0; i--) {
if (shutdown_handlers[i]) {
shutdown_handlers[i]();
}
}
// Disable scheduler on this core.
vTaskSuspendAll();
bool digital_reset_needed = false;
#if CONFIG_ESP_SYSTEM_MEMPROT_FEATURE
if (esp_memprot_is_intr_ena_any() || esp_memprot_is_locked_any()) {
digital_reset_needed = true;
}
#endif
if (digital_reset_needed) {
esp_restart_noos_dig();
}
esp_restart_noos();
}
Василий
кароче ардуина делает не так.....
Василий
ну я показал что подкапотка вся есть
Василий
всё можно крутить
Василий
пропогандирую отказ от ведруин)
Василий
кстати есть еще встроенная функция
Василий
которая в ROM
Василий
void esp_restart_noos(void) attribute ((noreturn));
Василий
точнее не в ром, они ее просто обозвали inner
Василий
есть от нее код, там всё красиво)
Василий
бляяя))))))))))
Василий
я разочарован))))))
Василий
знаете что там?
Василий
вачдог на секунду, сброс всех регистров вручную на рестарт, ждем.......
Василий
мир не будет прежним. всётаки китайцы не молодцы)
Василий
НО! digital рестарт, что я выше показал работает именно по дерганию регистра.
Василий
блин
Василий
Василий
в систем интернале
Василий
там и вачдог, и ручной сброс....