|
Усыпление сторожа-бабульки |
|
|
|
May 23 2013, 02:54
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(aaarrr @ May 23 2013, 01:00)  Достаточно отрезать WDI. Или оставить его в высокоимпедансном состоянии со стороны МК, если есть такая возможность. Если оставить вывод WDI хоть в низком, хоть в высоком состоянии, то примерно через секунду микросхема установит на ноге микроконтроллера RST/NMI ноль и МК сбросится. Надо сделать так, чтобы микросхема не генерировала сигнал сброса.
|
|
|
|
|
May 23 2013, 06:55
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(d7d1cd @ May 23 2013, 06:54)  Если оставить вывод WDI хоть в низком, хоть в высоком состоянии, то примерно через секунду микросхема установит на ноге микроконтроллера RST/NMI ноль и МК сбросится. Надо сделать так, чтобы микросхема не генерировала сигнал сброса. Помимо низкого и высокого, пин может находится еще в одном интересном состоянии, о котором, собственно, и шла речь. Настройте его на вход изначально. Если нет подтяжек, то это сработает.
|
|
|
|
|
May 23 2013, 17:07
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(aaarrr @ May 23 2013, 10:55)  Настройте его на вход изначально. Что настроить на вход? Внешний сторожевой таймер? Каким образом?
|
|
|
|
|
May 23 2013, 18:30
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(aaarrr @ May 23 2013, 21:17)  Вывод, которым дергается вход WDI таймера (если это, конечно, вывод МК). К сожалению переопределить направление пина МК, соединенного с пином WDI таймера, нельзя. Но хотя если бы и можно было, то я не понимаю как это решило бы проблему. Я бы не устанавливал 1 и 0 на ноге WDI, а читал бы, что сейчас на этой ноге. Но ведь там уровень не менялся бы и сброс все равно был бы сгенерирован. Или я чего то не допонимаю? P.S. Получается, чтобы отключить сброс таймера, надо отсоединить вывод RESET таймера от вывода RST\NMI микроконтроллера? По другому никак?
|
|
|
|
|
May 23 2013, 19:01
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ May 23 2013, 23:30)  Но хотя если бы и можно было, то я не понимаю как это решило бы проблему. Я бы не устанавливал 1 и 0 на ноге WDI, а читал бы, что сейчас на этой ноге. Но ведь там уровень не менялся бы и сброс все равно был бы сгенерирован. Или я чего то не допонимаю? aaarrr намекает вам вот на эту фразу в даташите Цитата Leaving WDI unconnected disables the watchdog. и на вот этот фрагмент блок-схемы "внутренностей" и/с.
Эскизы прикрепленных изображений
|
|
|
|
|
May 31 2013, 17:05
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(aaarrr @ May 23 2013, 22:56)  Таймер блокируется, если WDI не подключен (или, как вариант, подключен к выводу МК, определенному как вход). Других способов заставить супервизор не генерировать сброс нет. Я проверил такую блокировку. Вывод WDI подключен к МК на порт 5.6 и только к нему. Подключаю программатор, в режиме отладки делаю сброс. МК останавливается на первой инструкции. В дампе памяти вижу, что порт 5.6 настраивается как ВХОД. Однако примерно через 1 секунду таймер все равно срабатывает. В чем может быть причина?
|
|
|
|
|
May 31 2013, 18:46
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(d7d1cd @ May 31 2013, 21:05)  В чем может быть причина? Вариантов два: - Порт был в какой-то момент времени после подачи питания сконфигурирован как выход - Порт содержит pull-up или pull-down резистор Какой уровень на WDI, когда порт включен на вход?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|