|
WDT – Watchdog Timer, Для чего нужен? |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 38)
|
Jun 24 2013, 21:57
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Егоров @ Jun 24 2013, 21:58)  Она, как правило, зависает из-за недостаточно полных представлений программиста или создателя алгоритма о реальных процессах в системе. Т.е программисту который полностью представляет все реально происходящие процессы WDT не нужен. Цитата(Егоров @ Jun 24 2013, 21:58)  Нештатного поведения датчиков, Не согласен. Абсолютно любое поведение дачиков не должно приводить к зависанию программы. Цитата(Егоров @ Jun 24 2013, 21:58)  непредусмотренного стечения обстоятельств Например? Мне кажется что у добросовестно написанной программы как раз и не может быть непредусмотренных стечений обстоятельств. Цитата(Егоров @ Jun 24 2013, 21:58)  внешнего разового воздействия. Это Вы про радиацию?
|
|
|
|
|
Jun 25 2013, 10:56
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Егоров @ Jun 25 2013, 06:49)  Непредусмотренное стечение обстоятельств потому так и называется, что его невозможно предусмотреть. Мне кажется что непредусмотренное стечение обстоятельств это как раз такое стечение обстоятельств которое забыл или не смог предусмотреть программист. А для обстоятельств которые предусмотреть невозможно должно быть другое определение. Цитата(Егоров @ Jun 25 2013, 06:49)  Именно из-за таких программистов потерян был "Фобос-грунт". После сеанса связи станция осталась ориентированной на Землю, бесконечно ждала сигнала "конец связи", который оператор просто забыл выдать. А гениальная программа не следила в это время за состоянием бортовых батарей. Если это действительно так, то именно из за непредусмотренной ситуации это и произошло. Цитата(Егоров @ Jun 25 2013, 06:49)  "Абсолютно любое" поведение датчиков не знают даже их разработчики. Чтобы это поведение не приводило к зависанию программы существует сторожевой таймер. Сторожевой таймер существует не для предотвращения зависания а для выхода из оного. Цитата(aaarrr @ Jun 25 2013, 02:24)  Что поделать, слаб человек: и на МКС бортовые ЭВМ, бывает, зависают. Да что там далеко ходить, даже в уютном восьмибитном мирке не все справляются. Давайте не будем трогать MKC,windows и т.д. а только восьмибитный мирок (согласно ветке форума) Цитата(aaarrr @ Jun 25 2013, 02:24)  А если Вы полагаете, что "полностью представляете все реально происходящие процессы", значит, надо или переходить к более сложным процессам, или отказываться от иллюзий  Вот в этом и пытаюсь разобраться. Цитата(aaarrr @ Jun 25 2013, 01:14)  У добросовестно написанной программы, занимающейся, условно говоря, управлением светодиодом от кнопки - возможно; в объемной и разветвленной системе, активно взаимодействующей с внешним миром, Дайте критерий программы активно взаимодействующей с внешним миром. Программа анализирующая кнопку и управляющая светодиодом тоже считает себя активно взаимодействующей с внешним миром.
|
|
|
|
|
Jun 25 2013, 16:30
|
Гуру
     
Группа: Модераторы
Сообщений: 3 868
Регистрация: 15-03-13
Пользователь №: 76 048

|
Цитата(zombi @ Jun 25 2013, 13:56)  Давайте не будем трогать MKC,windows и т.д. а только восьмибитный мирок (согласно ветке форума) Вы, похоже, плохо знаете восьмибитный мирок. "Пионер" уже ушел за пределы Солнечной системы, облетел несколько планет, открыл несколько спутников, передал массу хороших цветных фотографий, выполнил сложнейшие баллистические расчеты по маневрированию и ориентации. Так там 8-битный бортовой процессор и ..аж 8 кбайт памяти на все. И не завис за 30 лет. Сейчас не каждый программист успеет на этом два светодиода зажечь. Ладно, Вы имеете свою точку зрения на все проблемы, оставайтесь на ней. Важно, что другие люди других предупредили. Кому-то это будет повод для размышлений.
|
|
|
|
|
Jun 25 2013, 21:14
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(ArtemKAD @ Jun 25 2013, 23:34)  проходя через радиационные пояса Опять радиация. Согласен, влияние оной действительно предвидеть невозможно. Получается что всё упирается только в радиацию? поскольку её влияние мы исключить полностью не можем нужно обязательно использовать WDT? А что если эта самая радиация "убьёт" и WDT? Зависнем навсегда?
|
|
|
|
|
Jun 26 2013, 07:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Цитата очень растяжимые понятия Само собой расняжимые. Много от чего зависят. Чем чище и стабильнее питание и меньше воздействия радиации на камень, тем больше времени он может не сбоить. И т.к. процесс статистический, чем больше устройств выпущено, тем раньше можно заметить отсутствие WDT. Потому и растяжимые.
|
|
|
|
|
Jun 26 2013, 11:16
|
Гуру
     
Группа: Модераторы
Сообщений: 3 868
Регистрация: 15-03-13
Пользователь №: 76 048

|
Цитата(stells @ Jun 25 2013, 21:45)  так это значит не была предусмотрена защита от полного разряда... а так вообще-то станция должна постоянно передавать свою телеметрию Ну да, так программист и считал. Пару спутников через плечо заглядывал как программируют. А межпланетная станция летит, ориентируясь на Солнце. Только короткое время сеанса связи переориентируется остронаправленной антенной на Землю. Сбросила пакет телеметрии, получила команды и опять разворачивается батареями на Солнце. Ошибочно были выстроены приоритеты прерываний и их маски. На время сеанса связи все прочее было замаскировано, чтобы не отвлекало. А отвлечься на контроль питания стоило. Потеря сеанса связи - невелика беда, можно через пару часов попытаться еще. Потеря же питания привела к потере объекта. Программа висела в бесконечном цикле ожидания, это был алгоритмический просчет, не предусмотрели такой ситуации. Сторожевой таймер тут бы выручил.
|
|
|
|
|
Jun 26 2013, 11:46
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(stells @ Jun 26 2013, 09:42)  ассемблер... а какая разница? Я так и предполагал. Как только начинаешь использовать подпрограммы,библиотеки написанные не самим тут уже без WDT никак это точно  Цитата(Егоров @ Jun 26 2013, 14:16)  ... это был алгоритмический просчет, не предусмотрели такой ситуации. Сторожевой таймер тут бы выручил. А если бы такую ситуацию предусмотрели то таймер был бы ненужен. Цитата(ArtemKAD @ Jun 26 2013, 10:54)  чем больше устройств выпущено, тем раньше можно заметить отсутствие WDT. МКС вон единицы выпушено а отсутствие WDT уже заметно. За двадцать лет мной разработано несколько десятков различных изделий на АТ90S,MEGA,XMEGA которые разошлись тиражами от сотни до десятков тысяч и ни в одном из них я никогда не использовал WDT. Жалоб на какие либо зависания рабочих изделий небыло.
|
|
|
|
|
Jun 26 2013, 12:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Странно. Особенно на AT90S. Разве что устройства не были автономными. Цитата МКС вон единицы выпушено а отсутствие WDT уже заметно. А причем тут МКС?
|
|
|
|
|
Jun 26 2013, 18:19
|
Гуру
     
Группа: Модераторы
Сообщений: 3 868
Регистрация: 15-03-13
Пользователь №: 76 048

|
Цитата(zombi @ Jun 26 2013, 14:46)  А если бы такую ситуацию предусмотрели то таймер был бы ненужен. Да, конечно. Но тут я вспоминаю кадры старого фильма: ПетрI: Продули битву почем зря... Меншиков: Да, мингерц, продули-с... А вот если бы у нас была конница... ПетрI: Так то ж если бы она была! Побеждать нужно уметь всегда!
|
|
|
|
|
Jun 27 2013, 14:00
|
Местный
  
Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925

|
Цитата(zombi @ Jun 21 2013, 21:34)  Кроме как для сброса плохо написанной "зависшей" программы для чего ещё можно использовать? Для сброса зависшего микроконтроллера с хорошо написанной программой? очевидно же. Микроконтроллеры часто зависают при воздействии помех по питанию и т.п. WDT должен использоваться обязательно, без вариантов.
|
|
|
|
|
Jun 27 2013, 18:50
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(zombi @ Jun 27 2013, 19:01)  Как предлагаете проверить WDT? Просто проверить(wdr не убираем): Код void main() { EnableWdt(); while (1) { if (WdtResetEnable()) // например какая надо нога в соответствующем состоянии asm("wdr"); else while (1); } } Если программа сбрасывается на >100500 МК значит WDT работает(при соответстующих условиях). Цитата(zombi @ Jun 27 2013, 19:01)  Разрешая работу любого узла мк я обязательно должен убедиться в его работоспособности. Это как бы обязательно. Но первый кандидат, почему программа не работает - это ваша программа. Но узлы МК тоже могут работать не так как задумывалось их разработчиками (xmega тому хороший пример).
|
|
|
|
|
Jun 27 2013, 19:30
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(_Артём_ @ Jun 27 2013, 21:50)  Просто проверить(wdr не убираем): Вы меня не поняли. Разрешение/запрещение wdr путём опроса ноги или перекомпиляции проекта это не то. Для полноценного теста работоспособности WDT и правильности расположения в программе команд wdr процессор должен именно подвиснуть и после этого сброситься именно от WDT. Пишут : "часто зависают при воздействии помех по питанию и т.п." Вот я и хочу как то воздействовать на питание или на т.п. с целью подвесить проц. Как мне это сделать??? Цитата(_Артём_ @ Jun 27 2013, 21:50)  Но первый кандидат, почему программа не работает - это ваша программа. Разумеется. Цитата(_Артём_ @ Jun 27 2013, 21:50)  Но узлы МК тоже могут работать не так как задумывалось их разработчиками (xmega тому хороший пример). Тогда я должен обязательно понять как оно работает/неработает, а без полного понимания этого писать программу просто не имеет смысла.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|