Просмотр полной версии : Нужно реализовать алгоритм работы...
Короче принцип таков. Есть исходный сигнал - мигание светодиода
раз в 3-4 сек. (соотв. лог 0 и 1). Есть микроконтроллер PIC16F84 и устройство на нём, которое время от времени "зависает". Нормальная работа - мигание светодиода. Зависон - либо потух постоянно, либо горит постоянно.
Как сделать авторесет ПИКа по этому сигналу. Нужна реализация в железе, типа откл. питания на 1-2 сек. и снова вкл. либо через MCLR что труднее...
Помогите советом! :)
Genadi Zawidowski
20.05.2007, 22:10
А случайно "зависания" не связаны с наводками? Нет ли ограничений на реализацию "ватчдога", работающего в непосредственной близости от зависающего девайса?
И может вообще - добиться нормальной работы оригинала?
Трудно сказать что-либо по этому поводу. Нужно юзать девайс,
а зависоны непонятно с чем связаны, возможно с передачей данных с компа (ежеминутно), возможно прошивка немного кривоватая.
Абсолютно непредсказуемы эти завсоны иной раз почти двое суток робил без проблем а иногда и час не проработает - повиснет.
И ещё видимо я недостаточно пояснил. Светодиод и работает от этого ПИКа на одном из портов. Он как индикатор введён в схему. Вот от него то и хотелось бы получать сигнал к ресету.
А вообще может проще сделать таймер на 1006ВИ1 и принудительно допустим через 1 час делать ресет через MCLR? :D
Кстати сейчас посмотрел на конфигурацию программирования ПИКа.
Там не стоит галка "включить WDT". Может поставить? Но опять же мы не знаем реализована ли в прошивке эта функция "сторожевой собаки". Вот сама прошивка:
Если есть исходники, то как сказал Геннадий, нужно реализовать имеющийся в контроллере вочдог.
Так всё таки надо модифицировать прошивку, или автоматом при установке галки включится watchdog ?
Если есть исходники, то как сказал Геннадий, нужно реализовать имеющийся в контроллере вочдог.
А кто поможет? Я в них не силён. :oops:
Так всё таки надо модифицировать прошивку, или автоматом при установке галки включится watchdog ?
Watchdog должен сбрасываться программно, иначе программа нормально работать не будет. Поэтому прошивку нужно дорабатывать. Для этого и нужны исходники (желательно).
Genadi Zawidowski
21.05.2007, 05:14
Я-то обозвал ватчдогом атдельнок устройство, но если речь об проекте с имеющимися исходниками, то причину зависания лучше найты по ним.
А встроенный в микропроцессор ватчдог использовать "на всяуий случай". Как я понял, помех в месте эксплуатации нет?
Смотря что понимать под помехами...
Есть рядом в 200 метрах работающий средневолновый передатчик мощой в 7,5 кВт.
Конкретный вопрос. Кто-то может доработать прошивку ПИКа с командами для сброса сторожевого таймера?
Без исходника (файл с расширением .asm или .с) заниматься этим совсем не удобно.
А что, нельзя ли преобразовать обратно в asm из hex? :?
Genadi Zawidowski
21.05.2007, 11:40
Смотря что понимать под помехами...
Есть рядом в 200 метрах работающий средневолновый передатчик мощой в 7,5 кВт.
Если антенны рядом, то думаю можно считать это помехами.
Обычные меры по борьбе - не забыть блокировочные конденсаторы на питании. На все провода "наружу" поставить фильтры (хоть десяток витков в колечке).
Толку нет. Уже пробовали. Всё равно виснет. Блок необслуживаемый и поэтому то хочется бесперебойной его работы.
Жду предложений.
Вот прошивка дизассемблированная с помощью WinPic800.
Не знаю, правильно или нет выполнил...?
Да не морочте тогда голову, чем разбираться в чужих исходниках (не исключено, что кривых- отсюда и зависание) поставте одновибратор на половине 561ла7 с постоянной времени RC = 5-6 сек, выход напрямую к ресету ПИКа и сбрасывайте его сигналом светодиода, как тот мигать перестанет, одновибратор перекинется и пик рестартует.. 3 детали на 1,5 рубля и 5 мин спаять..
Да не морочте тогда голову, чем разбираться в чужих исходниках (не исключено, что кривых- отсюда и зависание) поставте одновибратор на половине 561ла7 с постоянной времени RC = 5-6 сек, выход напрямую к ресету ПИКа и сбрасывайте его сигналом светодиода, как тот мигать перестанет, одновибратор перекинется и пик рестартует.. 3 детали на 1,5 рубля и 5 мин спаять..
Виталик, а можешь набросок схемки сделать? Я пока не представляю как это будет выглядеть... :?
И ещё состояние светодиода может принять и и лог. 1 (горит) и лог. 0
(не горит). Как анализировать два состояния, что это зависон ПИКа?
Так никто и не владеет темой?
Genadi Zawidowski
22.05.2007, 22:10
На днях проверяли. Чип с частотой 4 мгц устойчиво работает с кварцем
на 16 мгц. :D
У меня насчет "устойчиво" есть устойчивое сомнение.
М-да стиль конечно необычный, если кто хочет может поразбираться.
Clrwdt нет, так что галку ставить нельзя. Похоже что реализованы программно как минимум два синхронных порта, а такие вещи без таймаута делать опасно. Хотя может и питание, и MCLR сбоить, как у автора это реализовано неясно. У меня PIC12F685 управляет усилителем на ГУ-74, так светодиоды индикации сгорели, а ему хоть бы хны. Резистор + емкость + стабилитрон 5,6В на каждую ногу и вперед.
Попробуй может будет работать.!?
Попробуй может будет работать.!?
А что это, объясни пожалуйста?
Попробуй может будет работать.!?
А что это, объясни пожалуйста?Ваша прошивка с вкл. битом WDT. Если временные интервалы не критичны, то должно работать.
Попробуй может будет работать.!?
А что это, объясни пожалуйста?Ваша прошивка с вкл. битом WDT. Если временные интервалы не критичны, то должно работать.
Спасибо конечно за труд. Пока не проверял в работе, но при включении питания устройства, светодиод начинает мигать. Судя по всему должно работать... :D
Сегодня окончательно проверю в рабочем режиме, как назло вчера из строя вышел ни стого нис сего блок питания передатчика (трансформатор сгорел 8-ми ваттный 8O ). Пока отремонтирую а там и проверю..
Если не секрет, подскажи пожалуйста, каким образом удалось поставить команды Clrwdt?
Это было сделано через дизассемблер из исходного hex файла или взят мой выложенный asm. Честно говоря я сомневаюсь в корректности своего asm файла, так как сделагл его на "ура", через WinPic800 (кто-то в инете посоветовал, что в нём крутой дизассемблер... :? ).
Если не секрет, подскажи пожалуйста, каким образом удалось поставить команды Clrwdt?
Это было сделано через дизассемблер из исходного hex файла или взят мой выложенный asm. Честно говоря я сомневаюсь в корректности своего asm файла, так как сделагл его на "ура", через WinPic800 (кто-то в инете посоветовал, что в нём крутой дизассемблер... :? ).Дизассемблером пользовался, встроенным в icprog 1.05D. Подправил пару строк. Компиляция показала , что ваш и полученный HEX файл не отличаются. В исходнике везде при выходе из подпрограмм расставил команды Clrwdt(Подпрограмм достаточно). Все измененные строки справа. 2 строки лишние оказались. Вместо них вставил подключение предделителя к WDT.(регистр TMR0 или адрес 0X01 в исходнике не нашел) Если есть желание поэкспериментировать то стерите проставленные мной команды Clrwdt и поставьте их вместо NOP команд. Тогда и временные задержки сохранятся.
А ещё что-то там про задержку в 18 мсек для WDT, достаточно это или нет.
Говорят что нужен ещё какой то делитель чтоб увеличить время задержки, а то в секунду будет почти 50 раз ресетится и прога исполнятся не будет...
Короче я в этом ничего не понимаю может подскажете что это и нужно ли это здесь?
А ещё что-то там про задержку в 18 мсек для WDT, достаточно это или нет.
Говорят что нужен ещё какой то делитель чтоб увеличить время задержки, а то в секунду будет почти 50 раз ресетится и прога исполнятся не будет...
Короче я в этом ничего не понимаю может подскажете что это и нужно ли это здесь?Нужно вкл. питание и проверить наконец уже.(Надеюсь программа не управлят ядерной кнопкой ). За последствия я не отвечаю. Строки MOVLW 0B00001111 и MOVWF OPTION_REG добавлены.Это подключение предделителя к WDT. Сброс через 18*128.
Спасибо bob1 за помощь, сегодня уже поздно и тестировать буду завтра. Результаты сообщу.
Powered by vBulletin® Version 4.1.12 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot