AutoReset Mega 2560.

Тема в разделе "Arduino & Shields", создана пользователем Gomez, 24 фев 2018.

  1. Gomez

    Gomez Гик

    Озадачился вопросом, как лучше сделать автосброс Mega 2560.
    Опишу ситуацию. Данный проект - эдакая солянка, "коктейль жадности", то есть то, что купил лишнее и решил скидать в один корпус, чтобы можно было от нечего делать, вспоминать, что там есть и как до этого достучаться. ;)
    В "черном ящике" Мега, различные датчики (странно, что нет счетчика Гейгера), пара 7-сегментных матриц, OLED, APDS-9960, RTC DS3231, конечно же, WiFi (ESP-01), ну и еще чего-то. Соединено все качественно, что самое смешное. ;)
    Раз в неделю эта лабудень решительно виснет, то есть датчик расстояния GP2Y0A02YK0F (о, вот он тоже там, вспомнил) перестает реагировать на хозяина, oled демонстрирует утренний курс бананов в Зимбабве, а не злободневный, да в общем происходит нормальный зависон, хотя в коде никаких условий, способных вогнать скетч в бесконечный цикл, нет. (за работу библиотек не поручусь, конечно).

    Вопрос. Как лучше отлавливать "крепкий зависон"?
    Хватит ли вотчдога типа

    Код (C++):
    #include <avr/wdt.h>

    void setup()
    {
       wdt_enable(WDTO_8S);
       ...
    }

    void loop()
    {
       wdt_reset();
       ...
    }
    Или заставить тот же ESP-01 слушать "пульс" Mega 2560 и "жать" reset на ней? И если да, как лучше организовать?
    ;)
     
  2. DIYMan

    DIYMan Guest

    Аппаратный ватчдог, как вариант: внешнее устройство, которое передёргивает питание, если на него долгое время не поступает импульсов. Как вариант: http://samopal.pro/wdt-ne555/
     
    Gomez нравится это.
  3. Gomez

    Gomez Гик

    Спасибо, действительно, аппаратный ватчдог как-то надежнее.
    Разве что я бы хотел пока попробовать без еще одной схемки, а с помощью ESP-01 (она работает у меня в паре с Ардуино и соединена с ней по RX/TX), которая бы ждала каждые минут 5 весточку от Ардуины "status=ok" и в случае неполучения сажала бы на землю RESET Ардуины на короткое время. Но я пока не могу понять, можно ли соединять GPIO 0 или GPIO 2 от ESP-01 с ресетом ардуины, не включен ли там и так LOW (они же служат для ввода ESP в режим прошивки и прочего?) и могу ли я просто один из этих входов делать выходами и управлять HIGH/LOW на них. :)
     
  4. DIYMan

    DIYMan Guest

    ну включите через оптопару, как вариант.
     
    Gomez нравится это.
  5. Gomez

    Gomez Гик

    Спасибо, это мысль! Последний вопрос - если для аппаратного вотчдога в будущем использовать, например, ATTiny85, там же не надо гальванически развязывать ничего? ;) Просто нога Attiny, скажем, через 100 ом резистор идет на Reset "старшего товарища" и все?
     
  6. DIYMan

    DIYMan Guest

    По идее развязки не надо, но хуже от развязки ещё никому не было :)
     
  7. ostrov

    ostrov Гуру

    Самый минимальный тини13 вполне справится, я такое делал. Задаем таймаут, главное устройство периодически дергает ножкой, лучше сделать по прерыванию, чтобы не париться во всех функциях, тинька клнтролирует процесс. Резет осуществляется притягиванием одноименной ноги к земле через транзистор. Можно и реле. Можно и оптопарой, но ее я юзаю при разных уровнях напряжения.