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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Чем внешний watchdog лучше встроенного в МК?
DmitryM
сообщение Aug 22 2012, 19:04
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(_Артём_ @ Aug 22 2012, 18:48) *
Да, но сброс от WDT не должен разве приводить периферию в исходное состояние?

Не обязан, по WDT можно сохранять предсмертный дамп или просто уйти на "полный" reset.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 22 2012, 20:23
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(DmitryM @ Aug 22 2012, 22:04) *
Не обязан, по WDT можно сохранять предсмертный дамп

А где его определять тогда? В WDT_Handler-е (если есть) или Reset_Handler-е?

Цитата(DmitryM @ Aug 22 2012, 22:04) *
просто уйти на "полный" reset.


Типа так:
Код
if (watch_dog_reset_was)
     NVIC_SystemReset();

?
Это то хоть полный сброс?
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Aug 22 2012, 22:07
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(_Артём_ @ Aug 22 2012, 18:48) *
Да, но сброс от WDT не должен разве приводить периферию в исходное состояние?

А кто ж его заставит? Да и надо ли?

Простая периферия, типа таймера, просто инициализируется и запускается заново. Периферия посложнее, типа USB-контроллера, как правило имеет свой бит сброса в одном из управляющих регистров.

Цитата(_Артём_ @ Aug 23 2012, 00:23) *
А где его определять тогда? В WDT_Handler-е (если есть) или Reset_Handler-е?

Ясно дело, в WDT_Handler.
Go to the top of the page
 
+Quote Post
dinam
сообщение Aug 23 2012, 03:50
Сообщение #34


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(kan35 @ Aug 22 2012, 14:25) *
Есть ли подтверждения ваших умоаключений какими нибудь производителями или если вы грешите на ядро, ARMом? Несколько лет работаю с STM32, ранее работал с ARM7 и разными 8 битниками и чтобы в каких то случаях внешний ресет не работал - не встречалось ни разу и ни от кого не слышал.
Хоть и не ARM, но могу в качестве примера привести самый популярный мк с USB 2.0 - CY7C68013A. Если сбрасывать с отключением питания, то работает замечательно, что естественно для USB устройств. Если питание не отключать, то иногда на сброс не реагирует. Спасает только отключение питания.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Aug 23 2012, 04:01
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(jcxz @ Aug 20 2012, 18:45) *
если по первому импульсу из пачки помех у вас происходит пересброс проца, то если второй импульс пачки придёт раньше, чем вы успеете программно разрешить внутренний WD, то устройству обеспечен мёртвый зависон.

Хорошо что это не требуется делать в PIC.

Я обычно сначала эксплуатирую устройство без WDT и если в течении месяца другого не происходит зависаний, можно смело запускать только внутренний WDT.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 23 2012, 05:23
Сообщение #36


Гуру
******

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



Цитата(Forger @ Aug 22 2012, 21:20) *
Во-во! Полностью подтверждаю!
Не раз чехлил своих программеров за подобную лень sm.gif
Бывает периферия (внутренняя), которую невозможно сбросить НИКАК иначе как по внешнему ресету или ресету от внутреннего сторожевика.
Сам сталкивался с таким. Пример: FIFO-буфер DMA-канала в TI CC5502. Если остановить DMA в момент, когда чтение источника произошло, а запись в приёмник - ещё нет (т.е. - FIFO DMA содержит данные), то сбросить этот FIFO нет никакой возможности (в DMA-контроллере нет битов сброса, а enable каналов не влияет на fifo). Сбросить можно только через reset. Если не сбросить FIFO - думаю понятно что будет.
С тех пор как столкнулся с этим, всегда выполняю перезапуск firmware аппаратным сбросом (через WD или соотв. биты если есть).

Цитата(dinam @ Aug 23 2012, 09:50) *
Хоть и не ARM, но могу в качестве примера привести самый популярный мк с USB 2.0 - CY7C68013A. Если сбрасывать с отключением питания, то работает замечательно, что естественно для USB устройств. Если питание не отключать, то иногда на сброс не реагирует. Спасает только отключение питания.
Работал с CY7C68013A, вроде не замечал проблем. А может у вас не на сброс не реагировал, а по сбросу прошивку с внешней I2C-EEPROM не считывал или криво считывал и соответственно запускал прошивку не с EEPROM, а свою внутреннюю?

Цитата(Слесарь @ Aug 23 2012, 10:01) *
Хорошо что это не требуется делать в PIC.
Я обычно сначала эксплуатирую устройство без WDT и если в течении месяца другого не происходит зависаний, можно смело запускать только внутренний WDT.
Вы наверно не пользовались испытательными генераторами импульсных помех sm.gif
Когда-то помню испытывал устройство (в котором был только внутренний сторожевик) генератором ИГЭ15.2 - подавал пачки эл-статических разрядов. Примерно на каждой 10 пачке устройство висло. Хотя разрешение внутреннего сторожевика было в самом начале main(). Видно второй импульс пачки приходил когда управление находилось ещё внутри bootROM процессора (ещё не проверено состояние бут-пинов и не передано управление рабочему ПО), либо управление было в startup-коде си-программы.
Go to the top of the page
 
+Quote Post
dinam
сообщение Aug 23 2012, 05:28
Сообщение #37


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(jcxz @ Aug 23 2012, 12:11) *
Работал с CY7C68013A, вроде не замечал проблем. А может у вас не на сброс не реагировал, а по сбросу прошивку с внешней I2C-EEPROM не считывал или криво считывал и соответственно запускал прошивку не с EEPROM, а свою внутреннюю?
Сбросом отдельно дергаете, не отключая питания?
Честно говоря я так и не понял в чем засада. И почему он тогда не считывал из внешней EEPROM или криво?
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Aug 23 2012, 05:38
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(jcxz @ Aug 23 2012, 08:23) *
разрешение внутреннего сторожевика было в самом начале main().

Полный девайс ресет по сигналу WDT вызывает сброс счетчика WDT, как и команда CLRWDT.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 23 2012, 06:46
Сообщение #39


Гуру
******

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



Цитата(dinam @ Aug 23 2012, 11:28) *
Сбросом отдельно дергаете, не отключая питания?
Честно говоря я так и не понял в чем засада. И почему он тогда не считывал из внешней EEPROM или криво?
Я уже не помню дергал-ли отдельно сбросом. Помню что была проблема с чтением EEPROM сразу после ресета или включения питания. Но контроллер при этом перезапускался и работал как если бы EEPROM не было.
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 Текстовая версия Сейчас: 26th July 2025 - 05:10
Рейтинг@Mail.ru


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