ATMega128 - сторожевой таймер
- Сообщения: 2
- Зарегистрирован: Пн июл 20, 2009 13:25:21
Для АТМ128 написана программа. В неё нужно ввести сторожевой таймер с временем срабатывания около 1 минуты. Как известно, внутренний сторожевой таймер срабатывает максимум через 2 сек. Другие таймеры (Т1 и Т3) уже заняты другими делами. Кто что посоветует?
- Реклама
настроить сторожевой таймер на прерывания, а в обработчике проверять сколько раз он сработал, при срабатывании 30 раз выставлять на свободную ножку контроллера ноль, а ножку снаружи соединить с выводом "ресет", только вот с командой сброса сторожевого таймера нужно будет сбрасывать и счетчик срабатываний. другого пути пока не вижу)))
Ставим плюсы: )
прежде чем давать советы, вы бы изучили аппаратное строение контроллера atmega128 - в нем нет режима WDT с прерыванием, только сброс. кроме того, самосброс путем выдачи уровня на порт, соединенный с выводом сброса - не будет работать, во всяком случае, никакой гарантии устойчивой работы дать будет нельзя.ibiza11 писал(а):настроить сторожевой таймер на прерывания, а в обработчике проверять сколько раз он сработал, при срабатывании 30 раз выставлять на свободную ножку контроллера ноль, а ножку снаружи соединить с выводом "ресет", только вот с командой сброса сторожевого таймера нужно будет сбрасывать и счетчик срабатываний. другого пути пока не вижу)))
надо искать внешний WDT, хотя с таким долгим периодом - сомневаюсь, что они найдутся... можно смастерить самодельный WDT на той же 555 микросхеме - будет надежно, но, естественно, придется жертвовать одним портом... и хорошо продумать схему
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
во-первых. задумываться иной раз просто необходимо. во-вторых, просто необходимо читать фирменные документы по разным вопросам. в частности, фирма атмел не рекомендует способ сброса через импульс с вывода. я бы назвал ваш случай - удачным стечением обстоятельств, и не рекомендовал бы его использовать.ibiza11 писал(а):по крайней мере внешний вывод нормально работает на тине2313=)насчет мег даже не задумывался, что у них нет прерывания переполнения вотчдога.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
Пусть будет удачное стечение обстоятельств. Я считаю ваши придирки неуместными, ARV. Человек задал вопрос, я на него ответил, если он решит, что можно и попробует, то сразу наткнется на проблему отсутствия прерывания вотчдога и отложит этот вариант. Советуя, исходил только из личного опыта. Я уже сказал, что не подумал, что у Мег нет вышеупомянутого прерывания, поскольку мне оно никогда не было нужно.
Человеку свойственно ошибаться и я ошибся, от этого ничего не произошло, не зворвалась америка или газовопровод в Москве. И моя ошибка совершенно не значит, что я никогда не задумываюсь и не читаю фирменную документацию, а как раз наоборот - ззастваит меня лично просмотреть то, в чем я ошибся. Лично я не стал бы уповать на мнение других, если бы разрабатывал серьезный проект или хотя бы его проверял.
Человеку свойственно ошибаться и я ошибся, от этого ничего не произошло, не зворвалась америка или газовопровод в Москве. И моя ошибка совершенно не значит, что я никогда не задумываюсь и не читаю фирменную документацию, а как раз наоборот - ззастваит меня лично просмотреть то, в чем я ошибся. Лично я не стал бы уповать на мнение других, если бы разрабатывал серьезный проект или хотя бы его проверял.
Ставим плюсы: )
- Сообщения: 2
- Зарегистрирован: Пн июл 20, 2009 13:25:21
не думайте так. реальный сторож должен быть реализован чисто аппаратно, а в вашем случае обязательно будет некая программная обработка. в итоге, если от сбоя нарушится работа системы прерываний (например), ваш таймер хоть и досчитает до куда надо, но ничего не сделает - никакого сброса...Leonid90 писал(а):Спасибо за советы. Думаю попробовать использовать прерывание от таймер2 (8-ми разр), который запитать от внешнего входа, куда подать сигнал 0.5Гц.
ibiza11, я обращал ваше внимание на то, что недопустимо полагаться на самосброс сигналом с собственного порта, поступающим на вход сброса. мало того, что тут опять же завязана программная обработка, так еще и для сброса необходим импульс определенной длительности, а в вашем случае происходит вот что: процессор выставляет 0 на порту, этот ноль поступает на вход сброса, начинается сброс ядра и выводы портов переходят в третье состояние, т.е. сигнал сбороса исчезает... в этом случае может зависание наступить, может неверно проинициализироваться периферия - мало ли что может быть, если сброс некорректный? а все ваши рассуждения - это лишнее.
хочу вас убедить, что кроме встроенного или внешнего аппаратного WDT никакие другие варианты не могут считаться надежными! а самосброс по собственному сигналу с порта недопустим вообще!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Ну вот приблизительный пример аппаратного сторожевого таймера.
Недостатки:
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кОм.
Недостатки:
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кОм.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
зачем такой огород, если можно на конденсаторе? правда одна линия порта в/в с ПРОГРАММНЫМ дерганьем на ноль.примерно так
- Вложения
-
- Watchdog.JPG
- (21.96 КБ) 429 скачиваний
Ставим плюсы: )
ibiza11, посмотрите на свою схему: что будет, если с МК станет приходить глухой ноль? конденсатор в цепи базы "сбросного" транзистора никогда не зарядится, а значит, никакого сброса не получится... не смотря на кажущуюся простоту, WDT не так уж элементрано устроен. схема должна реагировать на изменения входного сигнала, чтобы срабатывать при отсутствии таких изменений в течение определенного периода. сразу предупреждаю: не торопитесь использовать конденсаторы бездумно - они тоже могут привести к подводным камешкам...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
тогда надо постоянную составляющую фильтровать. здесь нужны положительные импульсы. теперь оцените пожалуйста:
- Вложения
-
- Watchdog v2.JPG
- (27.82 КБ) 678 скачиваний
Последний раз редактировалось ibiza11 Ср июл 22, 2009 18:00:25, всего редактировалось 2 раза.
Ставим плюсы: )
ну, теперь более-менее, хотя никакой гарантии длительности выдержки этого "сторожа" схема не обеспечивает. я продолжаю оставаться сторонником нормальных микросхемных сторожей. например DS1232, MAX705, MAX823 - все обеспечивают около 1,5 секунды время срабатывания сторожа. так тут гарантия, а не бабушка надвое сказала...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
блин, совсем забыл, что речь о минутах... почему-то считал, что о секундах... 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Насчет последней схемы: конденсатор зарядится через диод и куда он разряжаться будет? последующие импульсы просто не будут проходить: конденсатор заряжен, диод закрыт.
Если уж делать дискриминатор на конденсаторе, то примерно так:
Если уж делать дискриминатор на конденсаторе, то примерно так:
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


