09.09.2012, 18:43
|
|
Прохожий
Регистрация: 21.08.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Сторожевой таймер в ATtiny25/45/85
На форуме задавался похожий вопрос 3 года назад, но ответ дан не был.
Проблема в следующем. Используется сторожевой таймер - чистый RESET. Пока програма занята и периодически его сбрасывает, не давая переполниться - все ОК.
Но вот проц засыпает. Срабатывает WDT. Пока все нормально. Проц честно спал все 8 секунд.
После сброса, т.к. нет работы, проц снова засыпает и тут же бац - сторожевой таймер срабатывает. В диагностике пишется, что период установлен 8 секунд, но таймер обнуляется сразу же. И так до бесконечности: инициализация WDT на максимальный период 8 секунд, засыпание и тут же, RESET по WDT, игнорируя период.
Однако, есть одна особенность. Если в процессе этой беды вдруг произойдет какое-нибудь другое прерывание, то после засыпания сторожевой таймер честно ждет 8 секунд, но опять же - 1 раз.
Подскажите, как с этим бороться и заставить WDT работать как надо?
Для примера привожу проект. Обратите внимание, что в обработчике прерывания вообще ничего писать не обязательно. Просто нужна внешняя активность на выводах микроконтроллера.
|
|
|
Сказали "Спасибо" mike124
|
|
|
09.09.2012, 19:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Перед инициализацией wdt обнуляй регистр mcusr и сам таймер (команда wdr)
|
|
|
|
09.09.2012, 22:28
|
|
Прохожий
Регистрация: 21.08.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Да я так и делал. Поставил вообще инициализацию сразу после MCUSR = 0x00; - ничего не меняется.
|
|
|
Сказали "Спасибо" mike124
|
|
|
10.09.2012, 10:05
|
|
Прописка
Регистрация: 14.06.2012
Сообщений: 263
Сказал спасибо: 2
Сказали Спасибо 129 раз(а) в 103 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Блин, у тебя там вообще все выводы в воздухе висят и непонятно к чему соединяются.
У еонтроллера же есть несколько векторов прерываний. Вот и ошибся в адресах. Хоть бы проследил за переходами то.
Последний раз редактировалось Алекс Василич; 10.09.2012 в 12:17.
|
|
|
Сказали "Спасибо" Алекс Василич
|
|
|
10.09.2012, 21:43
|
|
Прохожий
Регистрация: 21.08.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Сообщение от Алекс Василич
|
Вот и ошибся в адресах
|
Вы исходник смотрели? В каких адресах я ошибся? В первом варианте я вообще запретил все прерывания, кроме WDT. Во второй схеме, что выложил - это так, для проформы объявлено.
|
|
|
Сказали "Спасибо" mike124
|
|
|
15.10.2012, 16:19
|
|
Частый гость
Регистрация: 06.12.2006
Сообщений: 16
Сказал спасибо: 17
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
mike124,
Внимательно почитай AN про WDT, и сам даташит - У этого таймера весьма хитрая логика со сложными перекрестными связями.
Так что надо работать со всеми битами-флагами, которые завязаны на WDT.
Вот: AVR132: Using the Enhanced Watchdog Timer on tinyAVR and megaAVR devices
__________________
Микрокод Am2900... O tempora, o codes...
|
|
|
Сказали "Спасибо" Lomolom
|
|
|
15.10.2012, 19:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Курим ДШ.
|
|
|
Сказали "Спасибо" omercury
|
|
|
15.10.2012, 22:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Сообщение от omercury
|
Курим ДШ.
|
См. 2-й и 3-й посты
|
|
|
|
15.10.2012, 22:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
Сообщение от niXto
|
См. 2-й и 3-й посты
|
То бишь курить даташит уже вроде как бы не обязательно?
Компилим и проверяем.
Вложения:
![Тип файла: zip](images/attach/zip.gif) |
w1.zip (1.2 Кб, 44 просмотров) |
|
|
|
Сказали "Спасибо" omercury
|
|
|
16.10.2012, 15:22
|
|
Частый гость
Регистрация: 06.12.2006
Сообщений: 16
Сказал спасибо: 17
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Сторожевой таймер в ATtiny25/45/85
omercury
Человек спрашивает про обработку WDT уже в работающей программе. У ВДТ есть несколько тонкостей при обработке всего "оставляемого им г..."
В даташите и в.у. АН все подробно описано - нужно обрабатывать несколько бит, причем в определенном порядке.
Есть проект, в котором ВДТ работает обычным таймером - так вот пришлось попрыгать, чтобы его правильно работать научить.
__________________
Микрокод Am2900... O tempora, o codes...
|
|
|
Сказали "Спасибо" Lomolom
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:10.
|
|