19.05.2016, 20:09
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
WDT
Доброго времени!
Возникла такая непонятка с WDT...
Есть такая схема, собранная на такой плате, работающая по программе в архиве , симмулятор в Протеусе прилагается. (это для любителей тыкать носом на отсутствие исходников ).
Команда CLRWDT есть в обработке прерывания от Т0, в попдпрограммах чтения / записи по 1-Wire, где добавились позже, на всякий.
А теперь о проблеме:
На выходе трансформатора ~9в, при входном 220. В отладке - тестировании проблем не было. Изделие переехало на пмж в часный сектор, где в сети 200в днем, и 190 утром - вечером. Трижды пойманы сюрпризы, а именно - потухший индикатор. Откл/вкл питания возвращает в нормальный режим. Понимаю, что пик уходит в кольцо, зависает, еще какой нить катаклизм, имеет право, бор, скорее всего, ни при чем, т.к. напряжение 5 в присутствует. Емкостей на 0,1, смд, прям на плате, чуть ли не на выводах поставлено. Лучше не стало. А теперь вопрос: почему WDT не перезапускает пик?
Нет индикации, нет записи, бор не остановил по снижению питания, вдт не сбрасывается, должен переполниться и перезапустить программу с 0х00. вывод Resset, используется как порт ввода, 10 кОм + 0,1 на корпус. Пока работает в режиме, не включение / выключение коммутируемой нагрузки (около 500 ват), не рядом включение пилорамы, не другие возмущения к сбоям не приводят. А вот так, просто в процессе работы, имело место быть.
Озвучу еще раз: в квартире, неделю, по сосетству с утюгами, кондиционераи и пр. "соседями" глюков не замечено. Чего зеваю?
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
19.05.2016, 20:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,534
Сказал спасибо: 5,378
Сказали Спасибо 24,616 раз(а) в 5,542 сообщении(ях)
|
Re: WDT
WDT работает везде и всегда, даже когда больше ничего не работает. Это RC-генератор. А вот сбрасывать WDT в прерывании совсем не хорошо. Подозреваю, что у Вас плохо организовано питание и работа с BOR-детектором.
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/
моя домашняя страничка: http://www.eddy.com.ua/
|
|
|
|
19.05.2016, 21:01
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: WDT
Вот уж не допонял: это почему же в прерывании не камильфо?
Есть 2 прерывания, на входе - проверка, какое из обрабатывать, если Т0, знать питание в норме, Т0 работает, переполнился, можно и "собачку дёрнуть". Чего то не туде занесло, моло ли адрес / данная лишнюю единицу подхватила или потеряла - перезапуск.
Или я чего то не допонимаю? Есть "сторожевики, которые задействованы только для организации задержки "рессет" при подаче питани и остановке при снижении его же (напряжение) меньше заданного уровня - в пик не тот случай. Насколько я в курсе, ВДТ считает всё время, через заданный делитель и при переполнении перезапускает контроллер.
А насчет питания: как измениться настройка / порог БОР, при передергивании сетевой вилки ? Думаю - никак. И уж сильно сомневаюсь, сто из-зи всплесков питания слетели бы биты конфигурации, только динамич. данные, которые при старте с 0х00 обнуляются (ВСЕ!) и, некоторые, получают конкретные значения.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
19.05.2016, 21:46
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: WDT
вроде BOREN в конфигурации снят, не? поставьте на всякий резистор 100 Ом на вход сброса (последовательно). Проанализируйте как себя ведёт прибор при сбое термодатчика.
|
|
|
|
19.05.2016, 22:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
|
Re: WDT
Сообщение от rusyvochka
|
почему WDT не перезапускает пик?
|
Потому что слишком часто и безусловно сбрасывается wdt.
В общем случае, нельзя сбрасывать wdt, не убедившись, что всё пучком...
|
|
|
|
19.05.2016, 22:21
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: WDT
Можно дергать собачку в подпрограмме чтения термометра, предварительно убедившись, что цифры в норме. В остальных местах убрать.
|
|
|
|
19.05.2016, 22:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,605 раз(а) в 3,604 сообщении(ях)
|
Re: WDT
Возможно, что от помехи сбивается конфигурация выводов портов. И тогда пик может честно отрабатывать динамическую индикацию (и сбрасывать при этом вдт), но ничего не будет светиться, потому что выходные пины стали входами. Или другая ситуация - пик ждет какого-то события на входе, и не дождется, потому что этот вывод уже стал выходом.
|
|
|
|
19.05.2016, 22:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
|
Re: WDT
Сообщение от cogen
|
убедившись, что цифры в норме
|
Не надо. Если цифры неправильные - это проблема датчика и/или линии связи. При этом надо либо повторно запросить циферки, либо сообщить об ошибке датчика, либо и то и другое. Если датчик или линия связи испортились, то сбросом МК делу не поможешь, зато добавишь неразберихи - мол, че-каво происходит?
Wdt же защищает работу кода в самом МК. Например, при короткой просадке питания, когда не сработала цепь сброса, а данные в регистрах подпортились, или если в результате каких то действий получили совсем не то, что надобно.
Однако, после сброса МК по wdt надо определить причину сброса и произвести некоторые действия. Быть может, переход в аварийный или резервный режим работы устройства, или повторная инициализация периферии с дефолтными устрановками, отмена пользовательских изменений.
|
|
|
|
19.05.2016, 22:51
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: WDT
Так ведь за счет сброса и получится полная реинициализация после нескольких ошибок чтения датчика. Если с самого начала и до первого успешного чтения датчика показывать на дисплее прочерки, то сразу будет понятно что произошло - датчик не подключен или сдох. Если он оживает после передёргивания вилки - ставить управление его питанием от контроллера и дёргать после сброса
|
|
|
|
19.05.2016, 22:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Сообщений: 4,418
Сказал спасибо: 395
Сказали Спасибо 2,205 раз(а) в 1,306 сообщении(ях)
|
Re: WDT
повторную инициализацию датчика температуры можно проводить и без сброса самого МК. Поскольку, представьте, что МК например, помимо второстепенного датчика температуры, еще и крутит моторчик, перемещая какую-нить шняшку на какое-то расстояние. А тут из-за ошибки датчика температуры моторчик останавливается, а после перезапуска МК положение шняшки в пространстве неизвестно, и придется вернуть ее в первоначальное положение и повторить всё сначала.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:49.
|
|