Зависания и вачдог

Тема в разделе "Микроконтроллеры AVR", создана пользователем ostrov, 23 дек 2018.

  1. ostrov

    ostrov Гуру

    Делаю не очень сложное устройство, которое должно, в идеале, работать месяцами без выключения и обслуживания. Возник вопрос. Зависания, от которых призван спасать вачдог возникают по какой причине, аппаратной или сугубо программной? Например, программа: сидим ждем нажатия кнопки, когда дождались включили свет и выключили через какое то время. Виснуть тут негде, в дебри функций она не уходит, может ли зависнуть по другой причине? Нужно ли включать вачдог, или он только для неопределенных ситуаций, в которые могут завести программные кущи? Кто на практике использовал эту штуку и часто ли она реально срабатывала?
     
  2. По любой причине
     
    parovoZZ нравится это.
  3. Andycat

    Andycat Нерд

    Я во всех скетчах WDT включаю на всякий случай
     
  4. ostrov

    ostrov Гуру

    Нафига во всех то? Я с аппаратным зависанием ни разу не сталкивался. А во все места программы сброс пихать, чисто на всякий случай, это та еще радость.
     
  5. Andycat

    Andycat Нерд

    А зачем пихать во все части программы wdt reset ? У меня только в одном месте - в начале loop .
     
  6. Интересно. А вы каждое зависание, с которым когда либо сталкивались, тщательно проверяли? Иначе я не понимаю, как вы можете такое утверждать. Ну а если хотите столкнуться, то сделайте i2c-мастер на ардуино, и случайно отключите слейва на секунду посреди пакета. Будет вам замечательное аппаратное зависание.
     
    parovoZZ нравится это.
  7. AlexU

    AlexU Гуру

    Это-ж с какого перепугу появиться аппаратное зависание?
     
  8. AlexU

    AlexU Гуру

    С программными зависаниями сталкивался, а вот с аппаратными... Вот так вот не могу вспомнить ни одного случая аппаратного зависания.
     
  9. С такого, что обрыв линии это аппаратная проблема.
     
  10. ostrov

    ostrov Гуру

    Если вся программа крутится в лупе, то возможно, причем быстренько. А если есть ответвления, ну там в настройки зайти, помигать лампочкой и прочее. Пихать придется везде.
     
  11. AlexU

    AlexU Гуру

    Сама "проблема" есть в наличии, а "зависание"-то где в этом случае?
    Контроллер продолжить работать в соответствии с заложенной в него программой.
     
  12. А заложенная в него программа ожидает, что аппаратная часть функционирует правильно. И не обрабатывает сбой, и зависает к чертям. Потому что она такая в ардуино.
     
  13. AlexU

    AlexU Гуру

    Проблема-то программная, где аппаратное зависание?
     
  14. Обрыв линии - програмная проблема. Как скажете.
     
  15. ostrov

    ostrov Гуру

    Переиначу вопрос. В приведенном мною примере: опрос пинов и дрыгание другими пинами, возможно аппаратное зависание?
     
  16. Не вижу никакого переиначивания. Да, возможно.
     
  17. AlexU

    AlexU Гуру

    В общем случае -- да, возможно. Но скорее это будет зависание всего изделия, а не конкретного МК. И wdt в этом случае может быть бесполезен.
     
  18. parovoZZ

    parovoZZ Гуру

    бессмысленно. В младших AVR у WDT нет оконного режима. Это немного осложняет подход, но не ставит крест. Во всех критических местах необходимо расставить флаги. WDT сбрасывать только после того, как все флаги сброшены, затем их снова взвести. Т.к. нет окна, то в секциях с конечным временем выполнения (тот же обмен по I2C) необходимо контролировать время.
     
  19. parovoZZ

    parovoZZ Гуру

    причина ресета лежит в регистре MCUSR. Мигание светодиодом не зависнет никогда. У меня WDT использовался как будильник в метеодатчике. За полтора года ни одного зависания, хотя он тупо лежат на балконе (под снегом и каплями дождя.).
     
  20. Конечно. Аппаратных проблем вообще не бывает, если вас всех послушать. Кондесаторы в блоке питания не вздуваются. Космическое излучение не переворачиват биты. Импульсы в электросети? Нет, не слышал. Светодиоды служат вечность, кстати говоря. Миграции электронов в транзисторах тоже не бывает.
     
    Andycat нравится это.