Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.12.2010, 17:29
|
|
Частый гость
Регистрация: 20.07.2006
Сообщений: 37
Сказал спасибо: 2
Сказали Спасибо 7 раз(а) в 4 сообщении(ях)
|
Непонятки Watchdog (mega48+proteus)
Моделирую в Proteus на mega48. Включаю "собаку" и по даташиту время срабатывания до RESET должно быть от 16ms до 8 sec. А у меня в протеусе (v 7.5 SP3) получается максимум 4 ms. Специально набросал проектик, где тупо после включения инициализирую порт, включаю Watchdog на 8sec и в бесконечном цикле "дрыгаю" ногой, а осциллографом смотрю ширину пачки импульсов, которые успеют натикать до срабатывания Watchdog. И получается только максимум 4 ms, а не 8 sec, разница в 2000 раз.
Если менять биты Bit 5, 2..0 - WDP3..0, то и у меня меняется время задержки срабатывания RESET, пропорционально как в даташите, но это время всегда в 2000 раз меньше. В чем причина - не могу понять. Прошу помощи.
|
|
|
|
13.12.2010, 22:11
|
|
Частый гость
Регистрация: 22.03.2010
Адрес: Севастополь
Сообщений: 26
Сказал спасибо: 5
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Re: Непонятки Watchdog (mega48+proteus)
Не знаю как в Протеус-е v7.5, проверил в v7.7 все работает правильно. Время соответствует даташиту, При максимальном делителе ~ 8сек.
Код запуска таймера:
wdr ;Предварительный сброс таймера
ldi r16,0b00011000
sts $60,r16 ;Запуск
ldi r16,0b00101001
sts $60,r16 ;Установка предделителя
wdr
Ваш код:
wdr
LDI R30,LOW(57)
STS 96,R30
LDI R30,LOW(41)
STS 96,R30
wdr
Также верен.
|
|
|
|
13.12.2010, 22:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Непонятки Watchdog (mega48+proteus)
Рабята, а ничего, что вы предделитель и настройки собаки в один и тот же регистр настройки "собаки" пишете?
Кстати, быстрее работает. Вдвое.
|
|
|
|
13.12.2010, 23:00
|
|
Частый гость
Регистрация: 22.03.2010
Адрес: Севастополь
Сообщений: 26
Сказал спасибо: 5
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Re: Непонятки Watchdog (mega48+proteus)
Вы, наверное не cовсем поняли, о каком предделителе идет речь. Имеется ввиду
Предделитель сторожевого таймера.
Дело в том, что для меги48, в прочем, как и для большинства других,
Выделен один! регистр управления, он же как вы правильно заметили- WDTCSR
он же WDTCR(мега 8,16...)
Который совмещает! управление и коэффициент предделения.
Поэтому выш код- out WDTCSR,r16
Не совсем понятен.
Также еще один момент. В меги48 для регистра WDTCSR нет «зеркала» в регистровом файле($60)
Поэтому команду OUT использовать нельзя!
Последний раз редактировалось -Dreamer-; 13.12.2010 в 23:23.
|
|
|
|
14.12.2010, 00:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Непонятки Watchdog (mega48+proteus)
Сообщение от -Dreamer-
|
Также еще один момент. В меги48 для регистра WDTCSR нет «зеркала» в регистровом файле($60)
Поэтому команду OUT использовать нельзя!
|
Oops. Точно. Спасибо!
Тогда всё правильно, должно работать. для надёжности остаётся только так:
Код:
|
.include "m48def.inc"
ldi r16,(1‹‹WDCE)|(1‹‹WDE)
sts WDTCSR,r16
ldi r16,(1‹‹WDE)|(1‹‹WDP3)|(1‹‹WDP0)
sts WDTCSR,r16 |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:10.
|
|