ATMega128 - сторожевой таймер

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 2
Зарегистрирован: Пн июл 20, 2009 13:25:21

Сообщение Leonid90 »

Для АТМ128 написана программа. В неё нужно ввести сторожевой таймер с временем срабатывания около 1 минуты. Как известно, внутренний сторожевой таймер срабатывает максимум через 2 сек. Другие таймеры (Т1 и Т3) уже заняты другими делами. Кто что посоветует?
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

настроить сторожевой таймер на прерывания, а в обработчике проверять сколько раз он сработал, при срабатывании 30 раз выставлять на свободную ножку контроллера ноль, а ножку снаружи соединить с выводом "ресет", только вот с командой сброса сторожевого таймера нужно будет сбрасывать и счетчик срабатываний. другого пути пока не вижу)))
Ставим плюсы: )
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ibiza11 писал(а):настроить сторожевой таймер на прерывания, а в обработчике проверять сколько раз он сработал, при срабатывании 30 раз выставлять на свободную ножку контроллера ноль, а ножку снаружи соединить с выводом "ресет", только вот с командой сброса сторожевого таймера нужно будет сбрасывать и счетчик срабатываний. другого пути пока не вижу)))
прежде чем давать советы, вы бы изучили аппаратное строение контроллера atmega128 - в нем нет режима WDT с прерыванием, только сброс. кроме того, самосброс путем выдачи уровня на порт, соединенный с выводом сброса - не будет работать, во всяком случае, никакой гарантии устойчивой работы дать будет нельзя.

надо искать внешний WDT, хотя с таким долгим периодом - сомневаюсь, что они найдутся... можно смастерить самодельный WDT на той же 555 микросхеме - будет надежно, но, естественно, придется жертвовать одним портом... и хорошо продумать схему :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

по крайней мере внешний вывод нормально работает на тине2313=)насчет мег даже не задумывался, что у них нет прерывания переполнения вотчдога.
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ibiza11 писал(а):по крайней мере внешний вывод нормально работает на тине2313=)насчет мег даже не задумывался, что у них нет прерывания переполнения вотчдога.
во-первых. задумываться иной раз просто необходимо. во-вторых, просто необходимо читать фирменные документы по разным вопросам. в частности, фирма атмел не рекомендует способ сброса через импульс с вывода. я бы назвал ваш случай - удачным стечением обстоятельств, и не рекомендовал бы его использовать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Пусть будет удачное стечение обстоятельств. Я считаю ваши придирки неуместными, ARV. Человек задал вопрос, я на него ответил, если он решит, что можно и попробует, то сразу наткнется на проблему отсутствия прерывания вотчдога и отложит этот вариант. Советуя, исходил только из личного опыта. Я уже сказал, что не подумал, что у Мег нет вышеупомянутого прерывания, поскольку мне оно никогда не было нужно.
Человеку свойственно ошибаться и я ошибся, от этого ничего не произошло, не зворвалась америка или газовопровод в Москве. И моя ошибка совершенно не значит, что я никогда не задумываюсь и не читаю фирменную документацию, а как раз наоборот - ззастваит меня лично просмотреть то, в чем я ошибся. Лично я не стал бы уповать на мнение других, если бы разрабатывал серьезный проект или хотя бы его проверял.
Ставим плюсы: )
Реклама
Родился
Сообщения: 2
Зарегистрирован: Пн июл 20, 2009 13:25:21

Сообщение Leonid90 »

Спасибо за советы. Думаю попробовать использовать прерывание от таймер2 (8-ми разр), который запитать от внешнего входа, куда подать сигнал 0.5Гц.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Leonid90 писал(а):Спасибо за советы. Думаю попробовать использовать прерывание от таймер2 (8-ми разр), который запитать от внешнего входа, куда подать сигнал 0.5Гц.
не думайте так. реальный сторож должен быть реализован чисто аппаратно, а в вашем случае обязательно будет некая программная обработка. в итоге, если от сбоя нарушится работа системы прерываний (например), ваш таймер хоть и досчитает до куда надо, но ничего не сделает - никакого сброса...

ibiza11, я обращал ваше внимание на то, что недопустимо полагаться на самосброс сигналом с собственного порта, поступающим на вход сброса. мало того, что тут опять же завязана программная обработка, так еще и для сброса необходим импульс определенной длительности, а в вашем случае происходит вот что: процессор выставляет 0 на порту, этот ноль поступает на вход сброса, начинается сброс ядра и выводы портов переходят в третье состояние, т.е. сигнал сбороса исчезает... в этом случае может зависание наступить, может неверно проинициализироваться периферия - мало ли что может быть, если сброс некорректный? а все ваши рассуждения - это лишнее.

хочу вас убедить, что кроме встроенного или внешнего аппаратного WDT никакие другие варианты не могут считаться надежными! а самосброс по собственному сигналу с порта недопустим вообще!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

я согласен, но не со всем=) рассуждения никогда не лишни!!!
Ставим плюсы: )
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Ну вот приблизительный пример аппаратного сторожевого таймера.
Недостатки:
1. Лишние три корпуса,
2. Неопределенность состояния счетчиков при включении питания, которая самоустраняется не менее чем за 64 такта тактовой частоты контроллера, что потребует введение в код программы в самом начале задержки на 64 такта при сбросе по включению питания или BOD,
3. Обязательное тактирование контроллера от кварца, внешней RC-цепи или внешнего источника CLK,
4. Использование двух линий порта(ов) МК,
5. Использование таймера Т0 в асинхронном режиме с часовым кварцем на 32768Гц с предделителем 128 и выдачей импульсов по переполнению таймера на вывод OC0 (режим Normal Top=FF).
6. Ограничение тактовой частоты МК (не менее 4Гц :))) )
Достоинства:
1. Достаточно точное время переполнения (для данного случая 1,06(6)с+-0,008с без учета точности часового кварца).
2. Длительность импульса сброса 32 такта тактовой частоты контроллера, что при CLK=16МГц составит 2мкс, что укладывается в требования к длительности импульса сброса приведенные в даташите (не менее 1,5мкс).
3. Простой сброс данной схемы двумя командами: сбросить бит Pxx в 0, затем установить снова в единицу. Также производится и выключение/включение этого сторожевого таймера.

Повторюсь, пример приблизительный, набросал, как говорится, на скорую руку, но если верить графическому изображению элементов в Протеусе, должно работать.
При инициализации до запуска таймера Т0 необходимо выключить (сбросить) этот WDT выдачей в порт Рхх логического нуля, после настройки таймера, в нужном месте программы, запустить его выдачей в порт Рхх логической единицы, сбрасывать как описано выше.
Блин, забыл на вход CLK U1:A повесить подтягивающий резистор 10кОм.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

зачем такой огород, если можно на конденсаторе? правда одна линия порта в/в с ПРОГРАММНЫМ дерганьем на ноль.примерно так
Вложения
Watchdog.JPG
(21.96 КБ) 429 скачиваний
Ставим плюсы: )
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ibiza11, посмотрите на свою схему: что будет, если с МК станет приходить глухой ноль? конденсатор в цепи базы "сбросного" транзистора никогда не зарядится, а значит, никакого сброса не получится... не смотря на кажущуюся простоту, WDT не так уж элементрано устроен. схема должна реагировать на изменения входного сигнала, чтобы срабатывать при отсутствии таких изменений в течение определенного периода. сразу предупреждаю: не торопитесь использовать конденсаторы бездумно - они тоже могут привести к подводным камешкам...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

тогда надо постоянную составляющую фильтровать. здесь нужны положительные импульсы. теперь оцените пожалуйста:
Вложения
Watchdog v2.JPG
(27.82 КБ) 678 скачиваний
Последний раз редактировалось ibiza11 Ср июл 22, 2009 18:00:25, всего редактировалось 2 раза.
Ставим плюсы: )
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну, теперь более-менее, хотя никакой гарантии длительности выдержки этого "сторожа" схема не обеспечивает. я продолжаю оставаться сторонником нормальных микросхемных сторожей. например DS1232, MAX705, MAX823 - все обеспечивают около 1,5 секунды время срабатывания сторожа. так тут гарантия, а не бабушка надвое сказала...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

полностью согласен, что схема не отличается стабильностью, но топикстартер просил длинную задержку - в этой схеме есть такая возможность. как вариант, думаю можно попробовать.
Ставим плюсы: )
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18786
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

блин, совсем забыл, что речь о минутах... почему-то считал, что о секундах... :?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Насчет последней схемы: конденсатор зарядится через диод и куда он разряжаться будет? последующие импульсы просто не будут проходить: конденсатор заряжен, диод закрыт.
Если уж делать дискриминатор на конденсаторе, то примерно так:
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

вы правы, диод убираем) остался в предыдущей схемы=)
Ставим плюсы: )
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»