Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-сен-26 14:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Сторожевой таймер
СообщениеДобавлено: 2015-июн-08 13:40 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
Добрый день!
Появилась необходимость в использовании сторожевых таймеров.
Изучил оба (WWDG и IWDG).
WWDG тактируется сигналом PCLK. И я так понимаю, если откажет ,ну к примеру, блок PLL, то и таймер WWDG не сработает.
IWDG же тактируется генератором LSI с тактовой частотой приблизительно 40 кГц. Так вот допустим на процессор воздействовали как-то так, что зависло ядро. LSI тоже прекратит свою работу?
И вопрос номер 2: можно ли как то программно повесить процессор, чтобы сработал сторожевой таймер?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-08 16:16 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 395
Цитата:
И вопрос номер 2: можно ли как то программно повесить процессор, чтобы сработал сторожевой таймер?

Код:
while(1);

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-08 19:32 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-окт-19 17:25
Сообщения: 526
Откуда: г. Владимир ОАО "ВКБР"
А самое нормальная проверка, это когда вы отправляете по каком-либо интерфейсу команду и по ней процессор уходит в вечный цикл.

Главное после проверки потом не забыть убрать эту команду, иначе в программе появится самопальная, рукописная уязвимость кода)))

_________________
"В радиотехнике, как в церкви - многое не понятно, но приходится верить"
ВлГУ. к.т.н Садовский Н.В


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 08:50 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
редактор писал(а):
Код:
while(1);

Да вот и нет. Процессор бесконечный цикл не считает зависанием в программе. Таймеры при этом работают,прерываеия выполняются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 08:52 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
HEMAH писал(а):
А самое нормальная проверка, это когда вы отправляете по каком-либо интерфейсу команду и по ней процессор уходит в вечный цикл.

Главное после проверки потом не забыть убрать эту команду, иначе в программе появится самопальная, рукописная уязвимость кода)))

Так вот какой командой можно процессор в этот вечный цикл отправить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 09:04 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1147
Откуда: Тула
В вечный цикл командой while(1); или loop: goto loop;
чтобы совсем дергаться перестал -- отключите ему тактовую например.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 09:11 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 395
Цитата:
Да вот и нет. Процессор бесконечный цикл не считает зависанием в программе. Таймеры при этом работают,прерываеия выполняются.

Да кто ж в прерывании сторожевик сбрасывает?
А то что прерывания срабатывают - да пусть. Не жалко.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 13:10 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
редактор писал(а):
Цитата:
Да кто ж в прерывании сторожевик сбрасывает?
А то что прерывания срабатывают - да пусть. Не жалко.

А как еще можно сбросить IWDG?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 13:51 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 395
Цитата:
А как еще можно сбросить IWDG?

Только в основном цикле, или при использовании ОС в фоновой задаче.
Код:
void main (void)
{ Init();
  while(1)
    { Func(1);
       Func(2);
       ....
       ResetWDT();
     }
}

Если все работает правильно, то ResetWdt() вызывается периодически. Если Func1() Или Func2() подвисли (типа while(1); ) то сторожевик пересбросит процессор.
А если WDT сбрасывать в прерывании по таймеру, то при зависании фоновой функции все останется якобы работоспособным.Исключение HardFault или что-то подобное, что не даст сработать прерыванию.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 14:05 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
редактор писал(а):
Цитата:
А как еще можно сбросить IWDG?

А если WDT сбрасывать в прерывании по таймеру, то при зависании фоновой функции все останется якобы работоспособным.Исключение HardFault или что-то подобное, что не даст сработать прерыванию.

Меня как раз и интересует не программный,а аппаратный сбой.
И для тестирования способ с отключением тактовой мне понравился.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 15:36 
Не в сети

Зарегистрирован: 2011-сен-20 11:53
Сообщения: 56
редактор писал(а):
А если WDT сбрасывать в прерывании по таймеру, то при зависании фоновой функции все останется якобы работоспособным.Исключение HardFault или что-то подобное, что не даст сработать прерыванию.

А прерывания не могут повиснуть? Если могут, значит и там надо сбрасывать WDT.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-09 16:11 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 395
Цитата:
А прерывания не могут повиснуть? Если могут, значит и там надо сбрасывать WDT.

Если прерывание повисло, то до фоновых функций очередь не дойдет.Соответственно WDT не сбросится и произойдет перезапуск системы.
Цитата:
Меня как раз и интересует не программный,а аппаратный сбой.

Аппаратный сбой скорее всего забросит МК в HardFault со всеми вытекающими.
Если имеется ввиду сбой в работе периферии, то это (скорее всего) разновидность программного сбоя. Но здесь уже лучше говорить про конкретные ситуации.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-10 10:24 
Не в сети

Зарегистрирован: 2011-сен-20 11:53
Сообщения: 56
редактор писал(а):
Цитата:
А прерывания не могут повиснуть? Если могут, значит и там надо сбрасывать WDT.

Если прерывание повисло, то до фоновых функций очередь не дойдет.Соответственно WDT не сбросится и произойдет перезапуск системы.

Я имел ввиду, что длительность обработки прерывания может быть больше периода WDT, соответственно в прерывании тоже надо его сбрасывать.
А еще, если за длительным высокоприоритетным прерыванием выстроилась на обработку очередь низкоприоритетных прерываний(или они были прерваны высокоприоритетным), то во всех прерываниях надо делать сброс WDT.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-10 12:02 
Не в сети

Зарегистрирован: 2011-сен-05 12:12
Сообщения: 177
Откуда: Саратов
hardegor писал(а):
Я имел ввиду, что длительность обработки прерывания может быть больше периода WDT, соответственно в прерывании тоже надо его сбрасывать.
А еще, если за длительным высокоприоритетным прерыванием выстроилась на обработку очередь низкоприоритетных прерываний(или они были прерваны высокоприоритетным), то во всех прерываниях надо делать сброс WDT.

при таком раскладе надо менять архитектуру программы и переносить длительные обработки в фоновый процесс


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сторожевой таймер
СообщениеДобавлено: 2015-июн-16 09:59 
Не в сети

Зарегистрирован: 2013-июн-13 10:54
Сообщения: 9
Спасибо. Попробовал отрубить частоту, таймер сработал. Теперь еще вопрос:как-то можно определить,произошел сброс от сторожевого таймера или нет?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB