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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Как правильно использовать сторожевой таймер с РТОС?, wathdog timer, RTOS
jcxz
сообщение Mar 4 2018, 12:24
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Mar 4 2018, 13:26) *
В вашем случае сброс можно формировать из без WDT - просто ждать ответа очередной задачи по таймауту средствами RTOS.
Не успела ответить - пишем событие в журнал, сбрасываем проц любым способом. Хотя это можно делать и через WDT.

Лучше это делать через WDT.
Во-первых: Зачем плодить лишние сущности (высокоприоритетная задача для контроля + низкоприоритетная) если можно всё сделать в одном месте?
Во-вторых: А если нужна длительная работа некоей задачи по длительной циклической обработке неких данных "как можно быстрее всё обработать, но реал-тайм не нужен - как всё закончили так закончили"? Тогда помещаем её на самый нижний приоритет и она там колбасит со 100%-ной загрузкой CPU. При этом отвечая на периодические запросы о живости от WDT-задачи.
Вот у меня был проект, где нужно было быстро излучить некий зондирующий импульс (УЗ), захватить эхо-отклик на него, затем сделать его тяжёлую обработку, а потом - отобразить данные (или отправить их в интерфейс). Я сделал излучение/захват на высоком приоритете, потом - понижение приоритета задачи до минимального, чуть выше Idle (чтоб не мешала остальным работающим в это время реал-тайм задачам), длительная обработка на минимальном приоритете, после завершения - опять повышение приоритета задачи. При этом некоторое время процессор МК был загружен на 100%, и если-б контролировал WDT в самой низкоприоритетной задаче, то не успел бы завершить тяжёлую обработку из-за его срабатывания.

Цитата(Forger @ Mar 4 2018, 13:26) *
Поэтому, "давая" остальным возможность втупую сбрасывать WDT в прерываниях, вы тем самым открываете им "ящик пандоры".

Я нигде не советовал "сбрасывать втупую в прерываниях". Это мне кажется самоочевидным. Это как с рекурсией - мне кажется само собой очевидным, что в рекурсии должна быть условная ветка, завершающая дальнейшее углубление. Так и тут.

Цитата(Forger @ Mar 4 2018, 13:26) *
зы. самый лучший WDT - внешний, в идеале со своим источником питания.

Это не самый лучший - он просто обязателен. У меня во всех серьёзных проектах обязательно есть внешний WDT.
И тот алгоритм контроля, что я описал, он в реале работает с парой: внутренний WDT + внешний WDT. Стараюсь везде так и строить работу: внутренний WDT + внешний WDT. Естественно - время таймаута внутреннего при этом чуть меньше таймаута внешнего WDT.
Go to the top of the page
 
+Quote Post
Forger
сообщение Mar 4 2018, 12:59
Сообщение #32


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Mar 4 2018, 15:24) *
Лучше это делать через WDT.

У всех свое понятие "лучше".

Цитата
Во-первых: Зачем плодить лишние сущности (высокоприоритетная задача для контроля + низкоприоритетная) если можно всё сделать в одном месте?
У меня это было сделано в одном модуле LifeGuard (сущность "по-вашему"), в котором крутятся две задачи. Его реализация зависят от проекта. Простейшие содержат лишь задачу с WWDT.

Цитата
Во-вторых: А если нужна длительная работа некоей задачи по длительной циклической обработке неких данных "как можно быстрее всё обработать, но реал-тайм не нужен - как всё закончили так закончили"?

Достаточно сделать ей приоритет равным или ниже задачи с WWDT, но тогда там нужно ручками обеспечивать гарантию ее независаемости.
Однако, я всегда стараюсь строить "числовые" задачи так, чтобы они не грузили ядро на 100%.

Цитата
Это мне кажется самоочевидным.
Увы, не всем .... обратите внимание на название этого раздела: "В помощь начинающему";)
Наверняка среди читателей этой темы найдутся те, кто до сих пор грешит суперлупом и там же постоянно сбрасывает WDT smile3046.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
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 Текстовая версия Сейчас: 30th August 2025 - 04:03
Рейтинг@Mail.ru


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