Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > ПЛК и микроконтроллеры
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

ADAM5510 случаи зависания

 Ответить Ответить
Автор
Сообщение
vladi33 Смотреть выпадающим
Участник
Участник


Присоединился: 13 Май 2005
Online Status: Offline
Публикации: 61
Свойства публикации Свойства публикации   Ответить, цитируя автора - vladi33 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: ADAM5510 случаи зависания
    Опубликовано: 11 Май 2007 15:10
Здравствуйте.
В процессе эксплуатации контроллеров ADAM5510 периодически замечаю примерно раз в несколько месяцев происходит зависание контроллеров, приходится приезжать на удаленные рбъекты и нажимать Reset.
WatchDog установлен на NMI, в его прерывании инкрементируется счетчик и вызывается общий сброс:
int iCountWatch=0;
void interrupt NMI(...) //по JP2 вызывается от WDT 1.6s
{
union REGS r;      disable();
WDT_clear();
if(++iCountWatch>10){
    Release_All();
    int86(0x19, &r, &r);     // heat reset
}
outport(0xff22,0x8ffc);
enable();
}
Экстремальных условий и помех особых нет.
Хочется узнать причину такого поведения WatchDoga.
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Май 2007 15:41

Какие модули стоят?

Чего контроллеры делают?

Сергей
Наверх
vladi33 Смотреть выпадающим
Участник
Участник


Присоединился: 13 Май 2005
Online Status: Offline
Публикации: 61
Свойства публикации Свойства публикации   Ответить, цитируя автора - vladi33 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Май 2007 15:45
Измерение параметров объекта, архивация и отправка данных. Стоят модули: A5017H, A5050, модем MC35, блок UPS.
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Май 2007 01:13

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

Но я не это хочу сказать. А есть бредовая идея - пусть этот самый WatchDog  и "нажимает" Reset ! (через внешний сигнал).

Во всяком случае, будет исключена ветка вызова печально известного int19, а NMI будет работать чисто на счетчик. Круг поиска резко сузится, и если произойдет очередное зависание, то будет совершенно ясно где оно произошло.

С уважением, SAN

Наверх
Builder Смотреть выпадающим
Новичок
Новичок


Присоединился: 23 Июнь 2006
Категория: Belarus
Online Status: Offline
Публикации: 20
Свойства публикации Свойства публикации   Ответить, цитируя автора - Builder Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Май 2007 13:10

Первоначально опубликовано vladi33

в его прерывании инкрементируется счетчик и вызывается общий сброс:

С ADAM5510 я не работал, т.е. код не до конца понимаю, но всё же.

IMHO, в прерывании сбрасывать WatchDog - не лучшая идея. Запросто может возникнуть ситуация, когда ваш рабочий цикл зависнет (зациклится), а прерывания будут спокойно вызываться.

Сброс WatchDog должен вызываться в рабочем цикле.

Наверх
vladi33 Смотреть выпадающим
Участник
Участник


Присоединился: 13 Май 2005
Online Status: Offline
Публикации: 61
Свойства публикации Свойства публикации   Ответить, цитируя автора - vladi33 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2007 13:28
Спасибо, действительно скорее всего WDT_clear() в прерывании не совсем правильно. Но всеже думаю просто отказаться от NMI ,перевести на Rest и посмотреть что будет дальше.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz