Полная версия этой страницы:
Маленький watchdog
Nikitoc
Mar 2 2010, 13:56
Всем здрасте! Работаю сейчас с ATmega128L. По даташиту максимальное время переполнения его сторожевого таймера равно примерно 2 секундам. А мне необходимо, например, 30 сек. Какие могут быть варианты, кроме отключения-включения watchdog'а?
rezident
Mar 2 2010, 14:08
Если нехватка связана с длительным временем нахождения в "спячке", то логичнее всего было бы "посыпаться" с периодом меньшим срабатывания WDT и сбрасывать его.
HardJoker
Mar 2 2010, 14:27
Цитата(Nikitoc @ Mar 2 2010, 16:56)

Всем здрасте! Работаю сейчас с ATmega128L. По даташиту максимальное время переполнения его сторожевого таймера равно примерно 2 секундам. А мне необходимо, например, 30 сек. Какие могут быть варианты, кроме отключения-включения watchdog'а?
Внешний WatchDog на минуту. У Maxim'a как-то видел.
Виртуальный WD на таймерном прерывании. Делается таймерное прерывание, меньшее, чем максимальное время железного WD, в нем декрементируется некоторый счетчик (если он не нулевой), и выдается сброс WD (опять же, если счетчик не нулевой).
В основной программе в этот счетчик периодически записывается константа (это будет аналог сброса WD)
firstvald
Mar 4 2010, 19:46
Всякие нестандартные собаки пишу на 12 пике.
DpInRock
Mar 5 2010, 10:39
Ерунда какая-то.
Все намного проще.
Ставим максимальный вочдог.
Просыпаемся. Декремент счетчика. Если ноль - работаем, если нет, засыпаем опять.
Затраты по времени и питанию - ничтожные.
Nikitoc
Mar 7 2010, 18:19
Всем большое спасибо за дельные советы. Удалось решить проблему более-менее рациональным размещением команд сброса сторожевого таймера. Правда, пришлось немного изменить код.
Pyku_He_oTTyda
Mar 8 2010, 07:20
Цитата(DpInRock @ Mar 5 2010, 13:39)

Ерунда какая-то.
а счетчик где хранить, в еепром?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.