1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 12

Arduino Mega. Контроллер теплицы. Хроники - 4.0

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

Статус темы:
Закрыта.
  1. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139
    Можно я отвечу: НЕ микроконтроллер с вочдогом менее надежен, а работа WDT в составе микроконтроллера с часто изменяемым ПО менее надежна. Чем сложнее ПО, тем сложнее проверить все ветки, где WDT может не сработать. WDT на 555 с реле прост как автомат Калашникова и сработает всегда. Чтобы залипло современное реле, нужно одно из 2-х условий: брак или рукожопость разработчика, его применяющего.
     
  2. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Это вы не хотите тратить время на поиски.
    Используете внутренний вотчдог, довольны, ну и слава Богу.
    Здесь пошли другим путем, и не просто так. Внутренним наелись по полной.
    Такое ощущение, что все присутствующие в этой теме должны вас убеждать.
     
  3. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Ищу, да все без толку. Хоть бы намек кто дал, ключевые слова, по которым искать.

    Нашлась только шестилетней давности статья в Хабре, которая ссылается на глюки невесть каких Ардуино бутлодеров и призывает использовать Optiboot новейшего (по тому времени) релиза.

    А, значит, это все-таки эзотерическое знание, доступное лишь посвященным. Нет проблем, всяческих танцоров с бубном повидал на своем веку в избытке. Одна баба сказала, что встроенный wdt плохо работает - бросаем все, делаем внешний на рассыпухе.

    Вы как-то очень превратно понимаете принцип работы и саму идею wdt. Ни в коем случае не надо "проверять все ветки", упаси господи. Надо сбрасывать wdt в главном цикле, один и только один раз. А когда в этих самых ветках программа зациклится, то ли из-за помех, то ли из-за говнокода и кривых рук, то wdt сбросит систему.
     
  4. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Только без обид "понтификатор", это от слова понт или понтифик? :)
     
  5. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Есть несколько проблем при применении внутреннего сторожевого таймера. Первая - нужно тщательно изучить и правильно применить. При переходе на другой микроконтроллер история повторяется сначала. Нет уверенности что учли все нюансы применения.
    Внешний сторожевой таймер как выразился уважаемый Berendey-70 "прост как автомат Калашникова". Не важно какой у вас микроконтроллер или программа.
    Я не применяю механические элементы в схеме. 2019-03-17_15-06-54.png

    Для питания микроконтроллера я использую импульсный преобразователь DC-DC. Он обеспечивает стабильное питание и достаточный ток. При этом не выделяет столько тепла как линейный стабилизатор. На разрешающий вход преобразователя подключен выход сторожевого таймера (механические реле не применяю). Параметры конденсатора и резисторов подобраны так, что бы преобразователь отключался через (у меня) 40 секунд на 3 секунды. Этого времени достаточно для разряда конденсаторов по питанию и надежного сброса микроконтроллера. Следующий вопрос - почему такая большая длительность? Для надежной работы микроконтроллера теплицы длительность 30 - 100 секунд совершенно не имеет значения (в Arduino Nano возможен интервал не более 8 секунд). Время на компиляцию программы в IDE довольно большое и за это время сторожевой таймер может отключить контроллер не один раз. Очень неприятно, когда подошло время загрузки программы, а контроллер отключен. При повторной компиляции еще не факт что Вы попадете во время работы микроконтроллера. А мы люди нервные и нам сразу подавай прошивку. Поэтому выбран интервал 30 - 100 секунд. Для особо нервных (меня и Димы) есть два входа сброса сторожевого таймера. Один от вывода микроконтроллера, второй - сигнал TX с микросхемы USART (Atmega16U2) загрузки программы. Импульсы с TX сбрасывают сторожевой таймер, что обеспечивает сброс сторожевого таймера во время загрузки программы.
    Следующий очень важный момент, проверенный на практике. Применение встроенного в микроконтроллер сторожевого таймера обеспечивает сброс только микроконтроллера, а не всей схемы в целом. Если в это время завис другой узел (у нас часто была такая проблема с шиной I2C) или есть ошибки в программе то сброс микроконтроллера не перезапустит всю систему в целом. И только кратковременное отключение питания сможет полноценно выполнить перезагрузку системы.
     
    Последнее редактирование: 17.03.19
  6. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Pontificator
    pontificate [noun pon-tif-i-kit, -keyt; verb pon-tif-i-keyt]
    verb (used without object), pon·tif·i·cat·ed, pon·tif·i·cat·ing.

    • to perform the office or duties of a pontiff.
    • to speak in a pompous or dogmatic manner: Did he pontificate about the responsibilities of a good citizen?
    • to serve as a bishop, especially in a Pontifical Mass.
     
  7. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    "Pontificator Тот, кто pontificates. понтификат [существительное pon-tif-i-kit, - keyt; глагол pon-tif-i-keyt] глагол (используется без объекта), pon·tif·i·cat·ed, pon·tif·i·cat·ing. выполнять обязанности понтифика. если говорить напыщенно или догматично, говорил ли он об ответственности хорошего гражданина? служить епископом, особенно на папской Мессе."
    Ну я так и подумал, что от понтифик, но Вам с такими запросами и на каком то форуме:aga:
     
  8. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Вы мне живо напомнили бородатый анекдот. Едут в машине программист, инженер-механик и инженер-электрик. Машина вдруг заглохла и остановилась.
    - Механик: "Может, бензин кончился?"
    - Электрик: "Давайте свечи проверим и аккумулятор"
    - Программист: "А давайте все выйдем из машины и сядем в нее снова".

    Сброс микроконтроллера перезапустит всю систему, если система спроектировапна так, что сброс микроконтроллера ее перезапустит. Звучит смешно, ага...
     
  9. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Я применяю Optiboot в Arduino Mini (он уже встроен в загрузчик) в другом проекте. Здесь нужно держать ухо востро. К примеру уходите с основного цикла Loop на ожидание подключения к сети (SIM800C). А там время подключения до 30 секунд. Если не предусмотреть специальных мер. Так и будете виснуть на ожидании, пересбрасываться и ожидать. Это касается и других подпрограмм, возвращающих управление Loop не вовремя. Есть еще подпрограммы, где нужно отключать сторожевой таймер (точно не помню, из за каких то аппаратных ограничений). Короче не все так просто, гимор еще тот.
    Я был сторонником встроенного сторожевого таймера, но жизнь показала что это не универсальное решение. Сейчас работаю с внешним, схема отработана, претензий нет. Работает надежно.
     
  10. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Ну вам же товетили:
     
  11. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    1. В честь чего бы ему после сброса уходить с основного цикла Loop на ожидание подключения к сети?
    2. Как надо спроектировать систему, чтобы ожидание подключения могло ее завесить?
     
  12. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Так я уже все понял и тоже ответил. Танцы с бубном, не впервой встречаюсь.
     
  13. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Тогда каждому свое и наверно хватит это обсуждать:aga:
     
  14. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    - Программист: "А давайте все выйдем из машины и сядем в нее снова".

    Конечно, быть умным, когда вокруг все не очень - легко. А когда у тебя не так работает контроллер (относительно сложный) и непонятно, ты накосячил, китаец на на микросхеме, печатную плату плохо изготовили, программист пропустил, или не учел условие, есть нюансы в микроконтроллере, указанные только в Errata и. т. д тогда начинаешь искать, анализировать. Для этого нужен работающий, хоть некоторое время, контроллер. Вас не заставляют применять внешний сторожевой таймер. Каждый проектирует исходя из своего опыта, знаний и умения.
     
  15. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    - Программист: "А давайте все выйдем из машины и сядем в нее снова".
    Мы с Димой "продолбались" почти месяц из за периодического зависания. Определили что иногда блокируется шина I2C. Я грешил на программу, а Дима что плохая схема. Катили друг на друга бочку. В последствии оказалось виной бракованный таймер часов DS3231. Много кровушки попила, потому так нервно реагирую.
     
Статус темы:
Закрыта.