![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Den64 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Сначала перезагружаю контроллер сл. образом:
Контроллер перезагружается. Но затем, при инициализации, сторожевой таймер не могу выключить. Пишу следующее.
Результата нет. WDE как был установлен, так и остаётся. Что не так делаю? Это сообщение отредактировал(а) Den64 - 30.11.2009, 23:19 --------------------
Инагда пишу звуками. |
||||
|
|||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Вот из даташита:
WDT_off: ; Turn off global interrupt cli ; Reset Watchdog Timer wdr ; Clear WDRF in MCUSR in r16, MCUSR andi r16, (0xff - (1<<WDRF)) out MCUSR, r16 ; Write logical one to WDCE and WDE ; Keep old prescaler setting to prevent unintentional time-out in r16, WDTCR ori r16, (1<<WDCE) | (1<<WDE) out WDTCR, r16 ; Turn off WDT ldi r16, (0<<WDE) out WDTCR, r16 ; Turn on global interrupt sei ret -------------------- Мне нужны помощники. |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Неа, не сбрасывается.. Делал как в датащите. Там какойто нюанс
--------------------
Инагда пишу звуками. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Там ещё есть два режима работы сторожевого таймера, которые выбираются фьюзами. В одном режиме происходит аппаратный сброс, а во втором только прерывание.
-------------------- Мне нужны помощники. |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Фьюз WDTON сброшен.
А сторожевой таймер выключается только при снятии напряжения питания. А из программы не получается, проблему выше описал. Включать включаю, а выключить немогу.. --------------------
Инагда пишу звуками. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Дело в том, что при аппаратном сбросе сторожевой таймер должен выключаться сам, что собственно и происходит у тебя при сбросе по питанию. А фьюзов связанных со сторожевым таймером там на самом деле несколько. Мне лениво даташит рыть, возьми почитай, я думаю разберёшься.
-------------------- Мне нужны помощники. |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Перечитал и датащит и апноты, ответа не смог вычитать. Почитаю повнимательнее..
--------------------
Инагда пишу звуками. |
|||
|
||||
Eleman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.11.2009 Где: Россия , Тверь Репутация: нет Всего: нет |
У меня была подобная бяка . Отключал питание платы , а сторожевой не сбрасывался . Отсоединил кабель программирования и кабель питания -- всё сбросилось !!!
|
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
У меня не в этом проблема. Не могу програмно выключить сторожа. Какраз при выключении питания всё нормально сбрасывается. --------------------
Инагда пишу звуками. |
|||
|
||||
Eleman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.11.2009 Где: Россия , Тверь Репутация: нет Всего: нет |
wdt_enable(value) -- включаем
wdt_disable() - выключаем . WDR - сброс . так программно управляем "псом" в фьюзах WDTON - если "0" сторожевик всегда включён ., по умолчанию в заводских установках "1". |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
В фьюзах, если WDTON = 0 то режим работы определяется битами WDE и WDTIE. Если WDTON = 1, то работает всегда и при переполнении сброс. По умолчанию в заводских установках "0".
--------------------
Инагда пишу звуками. |
|||
|
||||
Eleman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.11.2009 Где: Россия , Тверь Репутация: нет Всего: нет |
"При программировании необходимо установить фьюзы (поставить "галки"): CKSEL0, SUT0, CKDIV8, BODLEVEL1. Остальные фьюзы должны быть сброшены.
Я пользовался программатором STK 200/300 и программой, встроенной в среду разработки CodeVisionAVR. Можно пользоваться любым программатором, который понимает ATtiny13. Будьте осторожны. В некоторых программах, в частности в UniProf, всё с точностью до наоборот - "галки" соответствуют НЕ установленным фьюзам. Лучше, прежде, чем начать программирование, сначала фьюзы считать и посмотреть, как они стоят. С завода ATtiny13 приходят с установленными CKSEL0, SUT0, CKDIV8. Надо добавить к ним BODLEVEL1. (Интересно, какой вредитель придумал, что установленному фьюзу соответствует "0", а не установленному - "1"?) Короче, будьте аккуратны при программировании фьюзов. " Добавлено через 2 минуты и 8 секунд процедура wdt_disable() устанавливает биты WDE и WDTIE в соответствии с выключенным фьюзом "1" WDTON. и самое главное !!!!!! после смены фьзов отключаем кабель питания и кабель программирования !!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |