Jump to content

    

dontsov

Участник
  • Content Count

    134
  • Joined

  • Last visited

Community Reputation

0 Обычный

About dontsov

  • Rank
    Частый гость

Recent Profile Visitors

2071 profile views
  1. Есть OpenSource прошивка ESP8266 на базе Arduino Framework + WiFiManager: https://github.com/dontsovcmc/waterius Задача 1: Требуется обновить Arduino Framework и WiFiManager, проверить на нескольких роутерах. Кинем в сообщество для тестирования. WiFiManager пришлось чуть доработать - добавил 1 вызов и другой код страниц. Надо будет перенести изменения, ничего сложного. Задача 2*: Проверить проблему с ошибкой подключения к 1% роутеров. Есть роутер Sercomm rv6699 к которому не подключается, могу выслать почтой. Другие роутеры: - Sercomm rv6699 - Innbox e70 - TP-Link AX5400 Иногда лечится установкой статического ip в ESP, иногда нет. Версия фреймворка достаточно старая, возможно стабильность уже улучшили. Тестировать можно на NodeMCU. Аналогичным образом не подключалась к данному роутеру какая то из прошивок ESPEasy, а старая ESPEasy stable подключалась. Гипотезы: - Ошибка вылечится обновлением версий; - WiFiManager некорректно использует WiFiClient; - WiFiClient необходимо донастроить, может вынести параметр в интерфейс; - Ошибка в WiFiClient (Однажды я уже исправлял в нём ошибку. Будет и у вас commit.=)) Оплачиваемо по этапам. Бюджет на первую задачу 10к. Торг.
  2. Оpensource проекту Ватериус требуется программист C++. Нужен опыт работы с ESP8266. Задача писать лог ESP8266 в LittleFS, чтобы можно было загрузить из вебинтерфейса при возникновении ошибок: https://github.com/dontsovcmc/waterius/issues/203 Оплату предлагайте. (Если сотрудничество удастся, есть ещё несколько задач на рефакторинг).
  3. @Сергей Борщ спасибо! Я вчера поучаствовал в долгой дискуссии в которой объяснили (и я понял и признал) насколько у меня «французский с Нижегородским» в коде.. ахах Буду рефакторить. Вообще, если начать понимать, что написал, можно убрать половину кода. Мда. Я до сих пор удивлен, насколько мало находится примеров с watchdog. И те без комментариев. Вот думаю насколько целесообразно переписать с нуля на регистрах всё.
  4. @Сергей Борщ @jcxz У меня прерывание после sleep... Других нет.
  5. А как это сделать?
  6. Хм… атомарного не уверен… а где это можно узнать? да, uint32_t здорово увеличивают память
  7. Да, в последней версии сделали uint32_t его! https://github.com/dontsovcmc/waterius/tree/dev
  8. @slanted wdt_enable в setup убрал. Посмотри, пожалуйста: https://github.com/dontsovcmc/waterius/tree/dev
  9. Все таки зависает прошивка. Не понятно отчего. Да, она не перезагружается по watchdog аварийно. Тему продолжил тут:
  10. Я попробовал имитировать задержку в коде, чтобы сработал watchdog на перезагрузку - он срабатывает, но плата уходит в зависание. Кажется потому что не выставлял MCUSR = 0. @slanted: Вот такой код корректно перезагружает если wdt_reset не наступит за 250мс: volatile uint32_t wdt_count; ISR( WDT_vect ) { ++wdt_count; WDTCR |= _BV(WDIE); } void setup() { noInterrupts(); info.service = MCUSR; // причина перезагрузки MCUSR = 0; // без этого не работает после перезагрузки по watchdog wdt_disable(); // а нужно ли тут, если у меня код быстро дойдёт до инициализации watchdog? interrupts(); set_sleep_mode( SLEEP_MODE_PWR_DOWN ); // достаточно же 1 раз сделать? wakeup_period = WAKEUP_PERIOD_DEFAULT; ..... } void loop() { power_all_disable(); //NoInterrupts не нужно? т.к. в wdt_enable есть ассемблерная команда cli wdt_enable(WDTO_250MS); interrupts(); wdt_count = 0; while ((wdt_count < wakeup_period) && !button.pressed()) { counting(); WDTCR |= _BV(WDIE); //пока не понял, обязательно ли здесь или можно после wdt_enable раз в WDT_vect есть. без этого не работает. sleep_mode(); } power_all_enable(); // Далее: я не отключаю watchdog, для надежности. wdt_reset() вызывается в button.wait_release() где я могу долго ждать пока пользователь отпустит кнопку. ... //взаимоотношения с ESP }
  11. @slanted последняя версия пока не зависала. но и предыдущая на столе 3 месяца назад не висла.. https://github.com/dontsovcmc/waterius/commit/612b8c626a5d018d566dfa210f00ac661e73affe#diff-9f275c81ac6d42b2d0a1caa9dee157db9fa36a1193217286fb083b66fb933914
  12. Мы там как то лихо потискали регистры прерываний , поэтому думаю дело в софте.
  13. @Vasily_ спасибо! я ищу специалиста, который найдёт зависания. @slanted :( , значит нужно перетрассировать схему ещё. а помехи могут привести к зависанию?
  14. @Vasily_ вы меня пугаете :) да, питание теперь шире. Фото не обновил на сайте(. @mcuprog хм разве? В разработке ПО всегда быстрее найти ошибку и исправить, чем переписывать с нуля и нанести новых ошибок. Разве с embedded не так же? @slanted ага. Только замыкать счетчики надо асинхронно с опросом по i2c. Для пущей реалистичности. Хотя если у меня на вторые сутки зависал код лёжа на столе…
  15. Мне нужна надежная прошивка, а моделированием или стендом это будет достигаться не важно :). Железо вышлю.