На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 54,
участников - 5 [ killer258, AlexRS, slava68, ew2abc, MagComm13]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Разработка, ремонт, схемы, модификации —› Помогите модифициовать hex-файл прошивки 
Трансиверы Yaesu в нашем магазине


Yaesu FT-817ND
руб.

Yaesu FT-857D
руб.

Yaesu FT-897D
руб.

Yaesu FT-450D
руб.

Yaesu FT-950
руб.
Автор Сообщение
alexis
Участник
Offline3.0
с фев 2006
Урал
Сообщений: 1735

Дата: 21 Май 2007 20:39:47 #  

Есть девайс на PIC16F84A, есть hex файл прошивки, без исходников. Устройство необслуживаемое, очень часто зависает и требуется постоянный перезапуск его. Подскажите как ввести в прошивку сторожевой таймер?
Дела с ПИКами ранее имел но не до такой степени, только шил...
Если можно, то просвятите по этому вопросу или предложите вариант другим путём делать ресет через MCLR
хардверно (вот только как определять, что девайс повис?)
BIV
Участник
Offline1.7
с сен 2004
Москва
Сообщений: 101

Дата: 21 Май 2007 21:01:49 #  

Не всё так просто.
Но по файлу можно дизассемблировать, и попробывать проанализировать.

Но с большей пользой надо проанализировать состояние зависшего устройства.
Возможно WATCH_DOG и не нужен, а например, питание проваливается.
Реклама
Google
alexis
Участник
Offline3.0
с фев 2006
Урал
Сообщений: 1735

Дата: 21 Май 2007 21:20:04 #  

Питание стабилизированное. Возможно зависоны происходят при постоянной связи с компом и передаче обновлённых данных на девайс каждую минуту. Вот вэтот момент может повиснуть непредсказуемо (может через час, а может и сутки пахать без зависа). Вот и хотелось циклически перезапускать без участия пользователя автоматом.
Вяз
Участник
Offline1.5
с фев 2007
Сообщений: 157

Дата: 21 Май 2007 21:59:28 #  

Насколько помню, средствами обычного mplab можно дизассемблировать .hex и далее работать с листингом как обычно. Грамотный программист допишет всё, что нужно для работы WDT, и соберёт программу заново так, чтобы она работала. Если такового полизости нет, лучше программу не трогать.
BIV
Участник
Offline1.7
с сен 2004
Москва
Сообщений: 101

Дата: 21 Май 2007 22:04:34 #  

Может ошибка передачи.
Тогда нужен не WD, а соблюдение протокола с контролем готовности.
Bar_boss
Участник
Offline1.9
с ноя 2006
Минск
Сообщений: 211

Дата: 22 Май 2007 22:52:02 · Поправил: Bar_boss (22 Май 2007 22:52:46) #  

Если программа периодически подвисает, и это не связано с проблемами "железa" или питания, то проблемы скорее всего в некорректном написании программы.
А включить WATCH_DOG элементарно даже без дезассемблирования программы - в любом программаторе этот параметр может быть установлен вне кода программы. Например, возьмите IC Prog, загрузите в него hex, и установите галочку напротив WDT. Вот и всё! Кстати, этим программатором можно и дезассемблировать код - для этого есть соответствующая кнопочка на панели управления.
Кстати, если не секрет, а как организован протокол обмена с компом? Видимо RS232? Но в 84-м пике НЕТ аппаратного USARTa, следовательно там его софтовая реализация. Из практики я так и ни разу не видел стабильно работающего програмного USARTa (хотя на истину не претендую). Так что такие устройства, где есть обмен с компом, лучше реализовывать на АППАРАТНОМ USARTе, например взять микроконтроллер 16F628A. По выводам - это 100 процентный аналог. Он отличается от 84-го расположением отдельных регистров и при инициализации необходимо отключить компараторы. Но без исходника, имея только hex, перейти на 628-й будет сложно.
Вяз
Участник
Offline1.5
с фев 2007
Сообщений: 157

Дата: 23 Май 2007 00:48:07 #  

Bar_boss
Считаю нужным заметить следующее: в рассматриваемой серии МК таймер WDT, привязанный к внутреннему независимому осциллятору контроллера, генерирует сигнал master reset либо wake_up (если МК в состоянии sleep) с периодом 18 ms в случае отключенного прескейлера. В связи с этим для корректной работы сторожевого таймера необходимо периодическое исполнение инструкции CLRWDT, обнуляющей счётчик WDT, в основном цикле программы с периодом, меньшим чем период работы WDT. Именно в добавлении инструкций CLRWDT в соответствующие места кода состоит необходимая правка программы, в противном случае WDT будет генерировать master reset примерно 50 раз в секунду и программа работать не будет.

alexis
Есть один неправильный, но очень простой и дешёвый способ решить Вашу проблему, если Ваша система некритична к периодическим сбоям и перезапускам. Можно просто с определённо периодичностью, например, каждый час, генерировать внешним таймером master reset, для профилактики. Означает ли Ваш вопрос в этой теме http://www.radioscanner.ru/forum/index.php?action=vthread&forum=10&topic=28963 , что Вы решили пойти именно этим путём?
Bar_boss
Участник
Offline1.9
с ноя 2006
Минск
Сообщений: 211

Дата: 23 Май 2007 11:15:34 #  

Да, конечно программа без CLRWDT будет периодически сбрасываться. Тогда можно дезассемблировать и разбросать CLRWDT по телу программы.
alexis
Участник
Offline3.0
с фев 2006
Урал
Сообщений: 1735

Дата: 24 Май 2007 16:36:21 · Поправил: alexis (24 Май 2007 18:11:28) #  

Спасибо огромное за советы, но мне нужен в итоге устойчива работающий необслуживаемы девайс.
Интересно а сторожевой таймер может надёжно справлятся с зависонами? Или всё таки сделать внешний периодический ресет...
По поводу девайса - это RDS кодер для передачи текстовой информации совместно с звуковой для FM вещания. радиостанция у нас необслуживаемая и периодические зависы блока RDS честно говоря уже достали. :(
Далее - обмен данными с компа до девайса идёт через LPT порт (непонятно зачем его применили разработчики). Там три сигнала, два из них это на SCL и SDA (скорей всего данные идут на микруху 24C16, которая связана с ПИКом по этим сигналам и туда же идут сигналы с компа) и сигнал какой то обратной связи (мож готовность какая) на той ножке прицеплен светодиод на землю и он мигает раз в три секунды.
Короче вот инфа, если что-то уточнить надобно пишите...
alexis
Участник
Offline3.0
с фев 2006
Урал
Сообщений: 1735

Дата: 25 Май 2007 19:09:43 #  

To Вяз.
Отправил тебе листинг оригинальной прошивки для PIC16F84. Смотри почту. ;)
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.042; miniBB ®