реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> WDT – Watchdog Timer, Для чего нужен?
ArtemKAD
сообщение Jun 26 2013, 07:54
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
очень растяжимые понятия

Само собой расняжимые. Много от чего зависят. Чем чище и стабильнее питание и меньше воздействия радиации на камень, тем больше времени он может не сбоить. И т.к. процесс статистический, чем больше устройств выпущено, тем раньше можно заметить отсутствие WDT.
Потому и растяжимые.
Go to the top of the page
 
+Quote Post
Егоров
сообщение Jun 26 2013, 11:16
Сообщение #32


Гуру
******

Группа: Модераторы
Сообщений: 3 868
Регистрация: 15-03-13
Пользователь №: 76 048



Цитата(stells @ Jun 25 2013, 21:45) *
так это значит не была предусмотрена защита от полного разряда... а так вообще-то станция должна постоянно передавать свою телеметрию

Ну да, так программист и считал. Пару спутников через плечо заглядывал как программируют.
А межпланетная станция летит, ориентируясь на Солнце. Только короткое время сеанса связи переориентируется остронаправленной антенной на Землю. Сбросила пакет телеметрии, получила команды и опять разворачивается батареями на Солнце.
Ошибочно были выстроены приоритеты прерываний и их маски. На время сеанса связи все прочее было замаскировано, чтобы не отвлекало.
А отвлечься на контроль питания стоило. Потеря сеанса связи - невелика беда, можно через пару часов попытаться еще. Потеря же питания привела к потере объекта.
Программа висела в бесконечном цикле ожидания, это был алгоритмический просчет, не предусмотрели такой ситуации. Сторожевой таймер тут бы выручил.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jun 26 2013, 11:46
Сообщение #33


Гуру
******

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



Цитата(stells @ Jun 26 2013, 09:42) *
ассемблер... а какая разница?

Я так и предполагал.

Как только начинаешь использовать подпрограммы,библиотеки написанные не самим тут уже без WDT никак это точно biggrin.gif

Цитата(Егоров @ Jun 26 2013, 14:16) *
... это был алгоритмический просчет, не предусмотрели такой ситуации. Сторожевой таймер тут бы выручил.

А если бы такую ситуацию предусмотрели то таймер был бы ненужен.

Цитата(ArtemKAD @ Jun 26 2013, 10:54) *
чем больше устройств выпущено, тем раньше можно заметить отсутствие WDT.

МКС вон единицы выпушено а отсутствие WDT уже заметно.

За двадцать лет мной разработано несколько десятков различных изделий на АТ90S,MEGA,XMEGA которые разошлись тиражами от сотни до десятков тысяч и ни в одном из них я никогда не использовал WDT.
Жалоб на какие либо зависания рабочих изделий небыло.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jun 26 2013, 12:16
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Странно. Особенно на AT90S. Разве что устройства не были автономными.

Цитата
МКС вон единицы выпушено а отсутствие WDT уже заметно.

А причем тут МКС?
Go to the top of the page
 
+Quote Post
Егоров
сообщение Jun 26 2013, 18:19
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 3 868
Регистрация: 15-03-13
Пользователь №: 76 048



Цитата(zombi @ Jun 26 2013, 14:46) *
А если бы такую ситуацию предусмотрели то таймер был бы ненужен.

Да, конечно. Но тут я вспоминаю кадры старого фильма:
ПетрI: Продули битву почем зря...
Меншиков: Да, мингерц, продули-с... А вот если бы у нас была конница...
ПетрI: Так то ж если бы она была! Побеждать нужно уметь всегда!
Go to the top of the page
 
+Quote Post
Fujitser
сообщение Jun 27 2013, 14:00
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925



Цитата(zombi @ Jun 21 2013, 21:34) *
Кроме как для сброса плохо написанной "зависшей" программы для чего ещё можно использовать?


Для сброса зависшего микроконтроллера с хорошо написанной программой? очевидно же.
Микроконтроллеры часто зависают при воздействии помех по питанию и т.п.
WDT должен использоваться обязательно, без вариантов.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jun 27 2013, 16:01
Сообщение #37


Гуру
******

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



Цитата(Fujitser @ Jun 27 2013, 17:00) *
Микроконтроллеры часто зависают при воздействии помех по питанию и т.п.
WDT должен использоваться обязательно, без вариантов.

Разрешая работу любого узла мк я обязательно должен убедиться в его работоспособности.

Как предлагаете проверить WDT? (советы убрать wdr не принимаются).
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jun 27 2013, 18:50
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 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 тому хороший пример).
Go to the top of the page
 
+Quote Post
zombi
сообщение Jun 27 2013, 19:30
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 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 тому хороший пример).

Тогда я должен обязательно понять как оно работает/неработает, а без полного понимания этого писать программу просто не имеет смысла.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01461 секунд с 7
ELECTRONIX ©2004-2016