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

 
 
> К вопросу о надежности сторожа в AVR, Нужен совет
DVF
сообщение May 31 2010, 06:06
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Предполагается, что люлька ребенка будет подогреваться. насколько надежен AVR в плане надежности работы сторожа? Мне навязывают независимую (дублирующую) схему на компараторе для обеспечения надежности от "вдруг AVR зависнет вместе со сторожем)?" Отсюда вопрос: "В каких случаях может зависнуть cторож?" Подогрев через контакты реле.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 22)
GDI
сообщение May 31 2010, 08:42
Сообщение #2


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Всегда думал, что "сторож" - это WatchDog, может вы имеете ввиду BOD (детектор снижения напряжения)? Тогда почему он должен "зависнуть вместе с АВР", там, наверное, тот же компаратор стоит, только еще и с цепями задержки сигнала Reset.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
DVF
сообщение May 31 2010, 09:28
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Имел ввиду WatchDog. Ну, предположим у меня хорошее питание, внешний Reset Circuit STM811, климатика - в помещении. Как мне переубедить? Или лучше иметь дублирующую цепь, помня о конечности рессурса МК?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 31 2010, 09:42
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Для такого случая (дети) я бы поставил ещё и внешний комбинированный wdt+supervisor...
Тут любые предположения о надёжности-ненадёжности неуместны нужно по-любому дублировать. ИМХО.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
DVF
сообщение May 31 2010, 10:05
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Да будет так.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 31 2010, 10:09
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DVF @ May 31 2010, 08:06) *
Предполагается, что люлька ребенка будет подогреваться. насколько надежен AVR в плане надежности работы сторожа?

Смотрите наличие у выбранного чипа сертификата на использование в медицинском оборудовании. Если есть, посылаете всех нафиг. Если нет, то это Ваши проблемы. Добавляете Watchdog и ресетчик.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
e-serg
сообщение Jun 1 2010, 01:26
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180



Цитата(zltigo @ May 31 2010, 19:09) *
Смотрите наличие у выбранного чипа сертификата на использование в медицинском оборудовании. Если есть, посылаете всех нафиг. Если нет, то это Ваши проблемы. Добавляете Watchdog и ресетчик.

Просто сертификата на микросхему, как бы очень мало. Нужен будет сертификат на все устройство.
Это же не кресло с подогревом, для любимого начальника.
кого поджарить советуете?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 1 2010, 05:16
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(e-serg @ Jun 1 2010, 03:26) *
Нужен будет сертификат на все устройство.

Кто-то утверждал обратное? Речь идет конкретно о возможности применения для данных применений некого чипа.
Все остальное, включая доказательство того, что разработанное на разрешенной базе устройство может быть использовано в медицине, уже забота разработчика устройства.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sbw
сообщение Oct 4 2010, 11:17
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 5-10-07
Из: Харьков, Украина
Пользователь №: 31 107



Цитата(DVF @ May 31 2010, 09:06) *
Предполагается, что люлька ребенка будет подогреваться. насколько надежен AVR в плане надежности работы сторожа? Мне навязывают независимую (дублирующую) схему на компараторе для обеспечения надежности от "вдруг AVR зависнет вместе со сторожем)?" Отсюда вопрос: "В каких случаях может зависнуть cторож?" Подогрев через контакты реле.


Столкнулся с ситуацией, когда виснет устройство (на mega32), причем так, что включенный WDT его не ресетит. Уже несколько дней извел на понимание проблемы, но пока безрезультатно. Иногда не виснет, а глючит (однократный сбой). BOD включен, WD включен... Процессор еще не менял, но до сих пор мне сбойные не попадались.

Так что я бы советовал ставить внешний супервизор со своим таймаутом и пинать его от ножки проца.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 4 2010, 12:31
Сообщение #10


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

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



Цитата
Столкнулся с ситуацией, когда виснет устройство (на mega32), причем так, что включенный WDT его не ресетит.

В "подвисшем состоянии" код проходит через точку сброса WDT...
Цитата
Так что я бы советовал ставить внешний супервизор со своим таймаутом и пинать его от ножки проца.

Что помешает ему так-же "подвиснуть" как и с внутреним?
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Oct 4 2010, 12:41
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(sbw @ Oct 4 2010, 18:17) *
Столкнулся с ситуацией, когда виснет устройство (на mega32), причем так, что включенный WDT его не ресетит.


В каком месте программы сбрасываете ватчдог? Надеюсь, не в прерывании?
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Oct 4 2010, 13:26
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(Dima_G @ Oct 4 2010, 16:41) *
В каком месте программы сбрасываете ватчдог? Надеюсь, не в прерывании?


Все прекрасно описано в " Сторожевой таймер!..., быть ему ...или не быть?" http://electronix.ru/forum/index.php?showt...=15187&st=0
Go to the top of the page
 
+Quote Post
sbw
сообщение Oct 4 2010, 16:06
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 5-10-07
Из: Харьков, Украина
Пользователь №: 31 107



Цитата(Dima_G @ Oct 4 2010, 15:41) *
В каком месте программы сбрасываете ватчдог? Надеюсь, не в прерывании?

В прерывании готовности АЦП. Прерывание - freerun. Причем ресетится вочдог после выставления уровня на ноге. В этом же прерывании происходит передача по SPI.

// отправить байт по SPI

if (data_command == command_)
{
data_command = data_;

if (transfer_address <= max_channel) // если номер канала в пределах массива
{
PORTB &= ~(1<<packet_control); // ~SS = 0 - начать передачу
SPDR = transfer_address; // послать 1й стартовый ноль или адрес
} // если за пределами массива - ничего не посылаем
}
else // data_command = data_
{
data_command = command_;

if (transfer_address == 0)
{
SPDR = 0; // второй стартовый ноль
transfer_address++; // увеличить номер канала
}
else
{
if (transfer_address <= max_channel) // если номер канала в пределах массива
{
SPDR = ch_levels_address_send [transfer_address-1]; // послать уровень канала
transfer_address++; // увеличить номер канала
}
else // if transfer_address > max_channel
{
PORTB |= 1<<packet_control; // ~SS = 1, завершить передачу
transfer_address=0;

ch_levels_address_temp = ch_levels_address_change; // переписать указатели на массивы
ch_levels_address_change = ch_levels_address_send;
ch_levels_address_send = ch_levels_address_temp;

wdt_reset(); // <<<<<<<<<<<<---------- WD reset
}

}
}

переменная transfer_address в другом месте не обнуляется, только при старте программы.
Состояние после зависа - уровень 1 на ноге выставлен, передачи нет (ни данных, ни клока).
Когда происходит просто сбой - то ощущение, что меняется код программы: часть данных передается, а часть - нет. Или будто бы память (в котором хранится массив на передачу) запорота и не обновляется.


Цитата(ArtemKAD @ Oct 4 2010, 15:31) *
В "подвисшем состоянии" код проходит через точку сброса WDT...

Что помешает ему так-же "подвиснуть" как и с внутреним?


если бы проходил - была бы передача по SPI, чего не наблюдается осциллографом.

Забыл добавить, что мега работает от внешнего кварца 16мгц. Грешил на него - менял, менял конденсаторы обвязки. Но после того, как переключил на внутренний RC и оно зависло все равно - "опустились руки". Завтра попробую поменять мегу, она "не свежая" была, выпаяна из другого проекта.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2010, 16:27
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Глупо просто/тупо сбрасывать WDT в прерывании. laughing.gif
Сбрасывать WDT нужно только после проверки условия и только при выполнении этого условия. В условии обычно проверяются флаги прохождения критически важных участков кода. Т.е. в разных местах программы взводятся битовые флаги. При проверке условия установки этих флагов WDT сбрасывается только в том случае, если установлены все эти флаги. После сброса WDT сбрасываются и флаги.
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Oct 5 2010, 07:34
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(rezident @ Oct 4 2010, 20:27) *
Сбрасывать WDT нужно только после проверки условия и только при выполнении этого условия. В условии обычно проверяются флаги прохождения критически важных участков кода. Т.е. в разных местах программы взводятся битовые флаги. При проверке условия установки этих флагов WDT сбрасывается только в том случае, если установлены все эти флаги. После сброса WDT сбрасываются и флаги.

Используется для диагностики при зависании, чтобы выявить место глюка?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 5 2010, 10:54
Сообщение #16


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

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



Цитата
если бы проходил - была бы передача по SPI, чего не наблюдается осциллографом.

Может быть и обратная ситуация - WDT может не дать запуститься процу постоянно сбрасывая его в самом начале программы. Иногда это связано с не корректной оптимизацией кода компилятором(смотреть полученый код)...
Go to the top of the page
 
+Quote Post
Batman
сообщение Oct 5 2010, 11:15
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-04-07
Пользователь №: 26 732



Обычно все критичные устройства включаю через т.н. динамическое реле. Это схема из пары транзисторов диодов и конденсаторов. Реле замкнуто тогда, когда на входе присутствует некая частота. В случае зависания МК (который и генерирует эту частоту) либо при отгорании порта, на входе будет одно из стабильных состояний 1 или 0. Реле отключится.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 5 2010, 12:32
Сообщение #18


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

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



Цитата
В случае зависания МК (который и генерирует эту частоту) либо при отгорании порта, на входе будет одно из стабильных состояний 1 или 0. Реле отключится.

Шас.... МК не зависает полностью - он исполняет некий участок кода который вполне может продолжать генерить.
2) Надежность МК на порядок выше надежности реле. Подобная "защита" - хорошо разложенные грабли....
Go to the top of the page
 
+Quote Post
Batman
сообщение Oct 5 2010, 13:41
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-04-07
Пользователь №: 26 732



laughing.gif По моему Вас понесло с надежностью maniac.gif. Мне кажется вероятность появления НЛО на Тверской с пьяными тетками в тарелке намного выше. Самопроизвольных зависаний МК (без учета корявых рук) за 5 лет у меня не было. Выограли порты. Подобная защита широко применяется в подземной добыче, где без согласований с госнадзором даже чихнуть нельзяexcl.gif wink.gif

Сообщение отредактировал Batman - Oct 5 2010, 13:44
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 5 2010, 14:22
Сообщение #20


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

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



Цитата
Выограли порты.

Да, порты выгорали... После того, как выгорали буфера к которым они подключены. smile3046.gif Иногда выгорали с половиной платы в прямом смысле слова....
Цитата
По моему Вас понесло с надежностью . Мне кажется вероятность появления НЛО на Тверской с пьяными тетками в тарелке намного выше. Самопроизвольных зависаний МК (без учета корявых рук) за 5 лет у меня не было.

А я даже не знаю было или нет... Но то, что на нескольких десятках тысяч моих изделий на которых никогда небыло кнопки "Reset" никто за десять лет не заметил зависания - 100%... Причем выключателей питания там так-же обычно не предусматриваю...
Go to the top of the page
 
+Quote Post
sbw
сообщение Oct 5 2010, 15:18
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 5-10-07
Из: Харьков, Украина
Пользователь №: 31 107



Цитата(ArtemKAD @ Oct 5 2010, 13:54) *
Может быть и обратная ситуация - WDT может не дать запуститься процу постоянно сбрасывая его в самом начале программы. Иногда это связано с не корректной оптимизацией кода компилятором(смотреть полученый код)...

не, тогда бы светодиод мигал - между моментом сброса, когда порты отключены от нагрузки, и моментом инициализации порта, когда на него выставляется "1" для светодиода, должно проходить время тайм-аута WDT. А он горит постоянно.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Oct 5 2010, 15:57
Сообщение #22


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

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



Цитата
между моментом сброса, когда порты отключены от нагрузки, и моментом инициализации порта, когда на него выставляется "1" для светодиода, должно проходить время тайм-аута WDT.

Нет. Там время паузы равно времени таймера старта(см в SUT-биты в фьюзах) + время с начала проги до иннициализации порта. Т.е. вполне может измеряться микросекундами. Т.е. глазом можно паузу и не заметить - смотри осциллографом или вместо светодиода поставь пищалку...
Go to the top of the page
 
+Quote Post
Itch
сообщение Oct 6 2010, 03:36
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410



Мне кажется стоит подключить какой-нибудь кондовый датчик перегрева в разрыв основной цепи питания обогрева.
Залипнет реле, отгорит порт в AVR... мало ли что может произойти.

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

Вы доверяете своему устройству?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:29
Рейтинг@Mail.ru


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