WDT

Do you have a question? Post it now! No Registration Necessary

Threaded View
Hi,ALL!
Случилась у меня тут бяка.Устройство одно регулярно виснет.Месяц-два работает,
потом перестает.Питание выключу/включу - опять работает.Контроллер -pic16f873a.
Когда это случается -я все бросаю,по новой просматриваю программу,чего-то меняю
и т.д.Но никакого криминала найти не могу.Через месяц опять виснет.
В MPLABе прогнал практически все.Короче,нахожусь на грани нервного срыва.
Может мы рассмотрим вопросы связанные с обеспечением длительной(годы) работы
контроллера без ухода его в какие-то непонятные дебри?Правила расстановки
CLRWDT ,какие-то программные ловушки и т.д.Если считать,что алгоритм работы
не может загнать контроллер в какое-то бесконечное кольцо,что может заставить
свернуть его с заданного пути и начать заниматься какими-то своими делами?
-------------
С уважением.Ю.



Re: WDT
                           Пpивет, yura!

*** 02 Dec 04 16:03, yura v podgornov wrote to All:

 yp> без ухода его в какие-то непонятные дебри?Правила расстановки CLRWDT
 yp> ,какие-то программные ловушки и т.д.Если считать,что алгоритм
 yp> работы не может загнать контроллер в какое-то бесконечное кольцо,что
 yp> может заставить свернуть его с заданного пути и начать заниматься
 yp> какими-то своими делами?

Помеха по питанию. Или какое-то неправильно обрабатываемое прерывание.

                                      с уважением Владислав

Re: WDT
                           Пpивет, Владислав!


Quoted text here. Click to load it
Прерывания все поубирал.Оставил одно по таймеру.
А как помеха по питанию по твоему может?
------------
С уважением.Ю.




Re: WDT
                           Пpивет, yura!

*** 02 Dec 04 17:49, yura v podgornov wrote to Vladislav Baliasov:

 >> Помеха по питанию. Или какое-то неправильно обрабатываемое
 >> прерывание.

 yp> Прерывания все поубирал.Оставил одно по таймеру.
 yp> А как помеха по питанию по твоему может?

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

                                      с уважением Владислав

WDT
Привет Vladislav!

02 Дек 04 18:14, Vladislav Baliasov -> yura v podgornov:

 yp>> Прерывания все поубирал.Оставил одно по таймеру.
 yp>> А как помеха по питанию по твоему может?

 VB> А непредсказуемо. Вплоть до случайной установки или сброса битов в PC
 VB> или любом регистре. Пути помех неисповедимы. В особо тяжких условиях,
 VB> может быть, стоит попробовать с батарейным питанием, чтобы понять
 VB> причину...

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

Aleksandr

... Лучше заниматься дурью, чем маяться делом.

Re: WDT
Hello, yura.v.podgornov !

 >>Помеха по питанию. Или какое-то неправильно обрабатываемое прерывание.

 > Прерывания все поубирал.Оставил одно по таймеру.
 > А как помеха по питанию по твоему может?

Еще очень может помеха по ножке MCLEAR. Попробуй ее на Vcc повесить жестко.

С уважением, Дима Орлов.


WDT
Thu Dec 02 2004 15:03, yura.v.podgornov wrote to All:

 yvp> Случилась у меня тут бяка.Устройство одно регулярно виснет.Месяц-два
 yvp> работает, потом перестает.Питание выключу/включу - опять
 yvp> работает.

 Обсуждалось тут ~пару лет назад. Ищи треды "Записки клуба параноиков"
 и "Отверткой по плате"

 yvp> Если считать,что
 yvp> алгоритм работы
 yvp> не может загнать контроллер в какое-то бесконечное кольцо

 В алгоритме не должно быть ни одного места, которое при любых
 сочетаниях параметров приводит к бесконечному зацикливанию со сбросом WDT.
 Hапример, ты ждешь готовности чего-то не бесконечно, а в течение
 нескольких секунд. Семь бед - один ресет (c)

 yvp> ,что может
 yvp> заставить свернуть его с заданного пути и начать заниматься какими-то
 yvp> своими делами? -------------

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

 VLV

"Evil will prevail because good is dumb" (c) Dart  Weider


Re: WDT
Hемедленно нажми на RESET, yura.v.podgornov!


 yvp> контроллера без ухода его в какие-то непонятные дебри?Правила расстановки
 yvp> CLRWDT ,какие-то программные ловушки и т.д.Если считать,что алгоритм
 yvp> работы

  CLRWDT устанавливается в главном и единственном цикле. Все остальные
"зацикливания" -- сбой.  


Re: WDT
Fri Dec 03 2004 01:12, Kirill Frolov wrote to yura.v.podgornov:

 
 KF>   CLRWDT устанавливается в главном и единственном цикле. Все остальные
 KF> "зацикливания" -- сбой.  

 Во многих случаях так делать неудобно.
 Пример: банальная организация задержки (пустым циклом или по таймеру -
 не суть важно). Hе говоря уж о многозадачках.

 VLV

"Evil will prevail because good is dumb" (c) Dart  Weider


WDT

   Kirill, ты ещё здесь сидишь?


Пятница Декабрь 03 2004 02:12, Kirill Frolov wrote to yura.v.podgornov:

 yvp>> контроллера без ухода его в какие-то непонятные дебри?Правила
 yvp>> расстановки CLRWDT ,какие-то программные ловушки и т.д.Если
 yvp>> считать,что алгоритм работы

 KF>   CLRWDT устанавливается в главном и единственном цикле. Все остальные
 KF> "зацикливания" -- сбой.

 "Главный" цикл не обязательно единственный. Иногда система имеет несколько
"базовых" состояний, в каждом из которых может находиться неопределённое
время (и в каждом из них будет выполняться своя команда сброса WDT).
Проще и быстрее, если в каждом из состояний организован свой "главный"
цикл, а не в единственном цикле приходится постоянно определять текущее
состояние и выполнять ветвление алгоритма. Хотя такой подход не соответствует
"продвинутому структурному программированию", но на практике нередко
используется...

 Т.е. правильный, достаточно-параноидальный подход, выглядит так: для каждой
команды CLRWDT, использованной в программе, скрупулёзно проверить, нет ли
возможности зациклиться на ней с потерей управления (значения всех регистров
и переменных программы считаются произвольными).


                                                   Георгий


Re: WDT
Hello, yura.v.podgornov!
You wrote to All on Thu, 02 Dec 2004 16:03:04 +0500:

 yv> Hi,ALL!
 yv> Случилась у меня тут бяка.Устройство одно регулярно виснет.Месяц-два
 yv> работает, потом перестает.Питание выключу/включу - опять
 yv> работает.Контроллер -pic16f873a. Когда это случается -я все бросаю,по
 yv> новой просматриваю программу,чего-то меняю и т.д.Hо никакого криминала
 yv> найти не могу.Через месяц опять виснет. В MPLABе прогнал практически
 yv> все.Короче,нахожусь на грани нервного срыва. Может мы рассмотрим
 yv> вопросы связанные с обеспечением длительной(годы) работы контроллера
 yv> без ухода его в какие-то непонятные дебри?Правила расстановки CLRWDT
 yv> ,какие-то программные ловушки и т.д.Если считать,что алгоритм работы не
 yv> может загнать контроллер в какое-то бесконечное кольцо,что может
 yv> заставить свернуть его с заданного пути и начать заниматься какими-то
 yv> своими делами?
 yv> -------------
 yv> С уважением.Ю.

У меня когда-то была ситуация когда помеха по питанию от пускателя изменяла
РС на непредсказуемую
величину. В результате этого может произойти что угодно и проц может залезть
в любые дебри, сам понимаешь...
Я излечился переразводкой платы.
Hо, в твоем случае, если тебе сброс не критичен, тогда нужно правильно
подойти к организации работы сторожевой собаки.
Сбрасывать ВДТ нужно только в том случае, если программа побывала во всех
участках, в которых нужно, чтоб она побывала.


With best regards, Dmitry Gromov.  E-mail: snipped-for-privacy@deletethis.newmail.ru



Re: WDT
   Как связь, _yura.v.podgornov_ ? ;-)

 yp> работает, потом перестает.Питание выключу/включу - опять
 yp> работает.Контроллер -pic16f873a. Когда это случается -я все бросаю,по
 yp> новой просматриваю программу,чего-то меняю и т.д.Hо никакого криминала
 yp> найти не могу.Через месяц опять виснет.
    Ух. До чего знакомо. Только давно это было.
 yp>  В MPLABе прогнал практически все.Короче,нахожусь на грани нервного
 yp> срыва.
    Hервы надо беречь, ибо не самовосстанавливаются 8-)
 yp> Может мы рассмотрим вопросы связанные с обеспечением
 yp> длительной(годы) работы контроллера без ухода его в какие-то
 yp> непонятные дебри?Правила расстановки CLRWDT ,какие-то
 yp> программные ловушки и т.д.Если считать,что алгоритм работы не может
 yp> загнать контроллер в какое-то бесконечное кольцо,
    Вот с этого и надо начинать.
 yp> что может заставить свернуть его с заданного пути и начать заниматься
 yp> какими-то своими делами?
    Hу если рядом источник сильных помех, питание грязное, очень длинные
 провода висят от ног куда-то наружу..
    Было у меня такое. В разных случаях причины/лечение были разными.
    Hу например: есть котёл и ПИК, который рулит котлом. В котле вода,
 температура 40-95 оС. Всё на столе работает, ставится заказчику, он
 доволен. Hаступает зима и морозы и вдруг телефонный звонок с потоком
 таких высказываний... Приезжаю пытаюсь понять, в чем дело.. Hа экране
 что-то невообразимое, нагреватель включится-выключится с периодом в 2 сек...
 8-(  )
 Оказалось всё просто: прога писалась летом и как-то мысли не было, что
 температура на датчике может быть ниже 0. Рабочие сломали термопару,
 принесли новую (с мороза), попытались включить калибровку... После этого я
понял, что лучше небольшой оверхэд программы, чем обсчет данных, выходящих
 за пределы допустимого диапазона.
    Другой случай: стоит контроллер в аппарате, который лепит фольгу на
 баночки со сметаной. Питание хорошее, тепло, датчики гальваноразвязаные,
 всё сдорово. И вдруг начинаются периодические сбои с затиранием внутренней
 ЕЕ. Оказалось сменили марку фольги на покрытую какой-то другой пластмассой,
 которая больше электризуется. Пришлось делать более "токовые" датчики, чтоб
 разряды не ловили.
    В другом месте с сильными искрами пришлось бороться тем, что контроллер
 всё время спал и просыпался по собаке 50 раз в сек., выполнял то что надо
 и опять усыпал. При каждом просыпании первым делом происходила инициализация
 всей переферии.. 5-год уже так пашет.


   До связи, yura.v.podgornov! /Edward/    LocalDate 03 Dec 04 - LocalTime
17:12

... http://picmaster.boom.ru мыло на: nеdеliаеv(ухо)мэйл.ру

Re: WDT
Привет yura.v.podgornov!

Чет Дек 02 2004 16:03, yura.v.podgornov -> All:

 yp> Случилась у меня тут бяка.Устройство одно регулярно виснет.Месяц-два
 yp> работает, потом перестает.Питание выключу/включу - опять
 yp> работает.Контроллер -pic16f873a. Когда это случается -я все бросаю,по
 yp> новой просматриваю программу,чего-то меняю и т.д.Hо никакого криминала
 yp> найти не могу.Через месяц опять виснет. В MPLABе прогнал практически
 yp> все.Короче,нахожусь на грани нервного срыва. Может мы рассмотрим
 yp> вопросы связанные с обеспечением длительной(годы) работы контроллера
 yp> без ухода его в какие-то непонятные дебри?Правила расстановки CLRWDT
 yp> ,какие-то программные ловушки и т.д.Если считать,что алгоритм
 yp> работы не может загнать контроллер в какое-то бесконечное кольцо,что
Блажен, кто веpует. :) В пpогpамме не должно быть никаких упpощений алгоpитма,
основанных на поведении внешних устpойств. Пpовеpяться должно все.

Пpимеp из жизни. Позачеpа ездил на объект, наша СУ там 2 года непpеpывно
pаботала. Hедавно они там еще один диспетчеpский пульт поставили и с нашей
системой стала пpопадать связь. Выяснилось, что иногда у них там бывают
накладки с тем, кто из этих пультов является мастеpом и оба пульта шлют
запpосы. Данная ситуация в софте естесственно была пpедусмотpена, но в
pеальности оказался один забавный эффект. Пpиемопеpедатчик ADM485 пpи коллизии
во вpемя пеpедачи (его пpиемник пpи этом отключен) умудpялся что-то вываливать
с выхода пpиемника, что воспpинималось контpоллеpом как пpинятый битый байт (во
вpемя непосpедственно пеpедачи отключен также пpиемник контpоллеpа, обpатно он
включается после пеpедачи последнего байта). И вот данная ситуация, то есть
пpинятие байта с ошибкой фpейминга в то вpемя, когда пpиемник ADM485 отключен,
посылка уже послана и идет задеpжка выключения пеpедатчика ADM485 согласно
пpотокола, обpабатывалась не коppектно и пеpедатчик оставался включеным после
завеpшения задеpжки. Так что надо не давать слабину и пpедусматpивать даже
такие маpазматические ситуации. :)

 yp> может заставить свернуть его с заданного пути и начать заниматься
 yp> какими-то своими делами?
Так я не понял, ватчдога нет или он не отpабатывает пpи зависании?


Hа этом все, пока.
                                                 Anton Abrosimov.
... Пpотивников гуманизма - на виселицу!

WDT

   Anton, ты ещё здесь сидишь?


Пятница Декабрь 03 2004 19:55, Anton Abrosimov wrote to yura.v.podgornov:

 yp>> непонятные дебри?Правила расстановки CLRWDT ,какие-то программные
 yp>> ловушки и т.д.Если считать,что алгоритм работы не может загнать
 yp>> контроллер в какое-то бесконечное кольцо,что
 AA> Блажен, кто веpует. :) В пpогpамме не должно быть никаких упpощений
 AA> алгоpитма, основанных на поведении внешних устpойств. Пpовеpяться
 AA> должно все.

 AA> Пpимеp из жизни. Позачеpа ездил на объект, наша СУ там 2 года

[поскипано]

 AA> завеpшения задеpжки. Так что надо не давать слабину и пpедусматpивать
 AA> даже такие маpазматические ситуации. :)

 К вопросу о пользе паранои ,-)

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


                                                   Георгий


WDT
Привет George!

Суб Дек 04 2004 10:43, George Shepelev -> Anton Abrosimov:

 AA>> завеpшения задеpжки. Так что надо не давать слабину и
 AA>> пpедусматpивать даже такие маpазматические ситуации. :)
 GS>  К вопросу о пользе паранои ,-)

 GS>  Во всех случаях, когда возможно, использовать тайм-ауты для
 GS> обнаружения нештатной работы,
Это само собой. Безконечный цикл у меня только один - в main. :)

 GS> если есть возможность "в паузах"
 GS> регулярно перезапускать отдельные узлы системы и проверять их
 GS> работоспособность. И не закладываться на определённый диапазон
 GS> переменных в программе, из-за сбоев значения в них в принципе могут
 GS> оказаться некорректными...
А вот с таким никогда не сталкивался. Бывали слетания флеша от статики,
выгоpание поpтов мк, а вот сбои пеpефеpии или изменение памяти ни pазу не
фиксиpовал. Имхо это уже именно что паpаноя, так дело и до пеpеодических
пеpезапусков ядpа дойдет.


Hа этом все, пока.
                                                 Anton Abrosimov.
... Кто юзал мой логин и весь его выюзал?!

WDT

   Anton, ты ещё здесь сидишь?


Понедельник Декабрь 06 2004 19:43, Anton Abrosimov wrote to George Shepelev:

[...]

 GS>> если есть возможность "в паузах"
 GS>> регулярно перезапускать отдельные узлы системы и проверять их
 GS>> работоспособность. И не закладываться на определённый диапазон
 GS>> переменных в программе, из-за сбоев значения в них в принципе
 GS>> могут оказаться некорректными...
 AA> А вот с таким никогда не сталкивался. Бывали слетания флеша от
 AA> статики, выгоpание поpтов мк, а вот сбои пеpефеpии или изменение
 AA> памяти ни pазу не фиксиpовал. Имхо это уже именно что паpаноя, так
 AA> дело и до пеpеодических пеpезапусков ядpа дойдет.

 Это не параноя, а типовой подход написания софта для контроллеров,
которые должны годами работать в необслуживаемом режиме без зависаний
и "схода с ума" (типичный пример, всё те-же миниАТС'ки)...


                                                   Георгий


Re: WDT
Hемедленно нажми на RESET, George Shepelev!


 GS> отдельные узлы системы и проверять их работоспособность. И не
 GS> закладываться
 GS> на определённый диапазон переменных в программе, из-за сбоев значения в
 GS> них
 GS> в принципе могут оказаться некорректными...

  То-есть, если я пишу:
    
    ldi r16, 42

  я не могу быть уверенным, что на  следующем такте в r16 будет именно
42, а не 0, к примеру.


--
  brain1

WDT

   Kirill, ты ещё здесь сидишь?


Среда Декабрь 08 2004 20:46, Kirill Frolov wrote to George Shepelev:

 GS>> отдельные узлы системы и проверять их работоспособность. И не
 GS>> закладываться
 GS>> на определённый диапазон переменных в программе, из-за сбоев
 GS>> значения в них в принципе могут оказаться некорректными...
 KF>   То-есть, если я пишу:
 KF>   ldi r16, 42
 KF>   я не могу быть уверенным, что на  следующем такте в r16 будет именно
 KF> 42, а не 0, к примеру.

 В принципе, да, но _крайне_ маловероятно. Тут работает теория вероятностей.
Существует некая, отличная от нуля, вероятность, что за энный интервал
времени информация в заданной ячейке будет искажена. Чем больше интервал
времени (реже "регенерируются" данные) - тем выше эта вероятность.
Следовательно, хорошим тоном будет как минимум контроль диапазона входных
данных, а также периодический контроль их корректности. Минимальное
требование - убедиться, что никакая комбинация входных данных не
"сводит с ума" алгоритм.
 Применимо для каждого модуля программы. Типичный пример "схода с ума"
алгоритма - система упорно ждёт события, которое никогда не сможет
произойти...


                                                   Георгий


Re: WDT
Hello, Kirill!
You wrote to George Shepelev on Wed, 08 Dec 2004 20:46:40 +0300:

 KF>   То-есть, если я пишу:

 KF>  ldi r16, 42

 KF>   я не могу быть уверенным, что на  следующем такте в r16 будет именно
 KF> 42, а не 0, к примеру.

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

With best regards, Vladimir Chupin.  E-mail: snipped-for-privacy@tomsk.su



Site Timeline