реклама на сайте
подробности

 
 
> atmega88pa, отключение BOD программно
max_mart
сообщение Aug 30 2012, 10:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Всем привет.

Контроллер находится в режиме power-down. Просыпается по вотч-догу, настроенному только на прерывание, каждые 0.5 с. и по срабатыванию одной из 3 кнопок PCINT. При выключенном BOD и включенном вотч-доге потребление питания составляет 6 мкА, как в даташите.
Но не хотелось бы выключать супервизор(если он все время включен, то питание 25 мкА). В даташите написано, что его можно выключать программно на время пребывания в спящем режиме и затем он сам автоматически включится(когда контроллер проснется), если во фьюзах он включен(при этом он будит кушать около 3,3 мкА ).
Для этого есть специальные команды. И их надо использовать в конце каждого прерывания, чтобы выключить BOD.
Я использовал 3 варианта, но ни один не заработал!(
Команды:
1)
MCUCR |= (1<MCUCR |= (1<SMCR = 0b00000101; // enable sleep mode (power-down mode)
2)
MCUCR |= (1<MCUCR &=(~(1<SMCR = 0b00000101; // enable sleep mode (power-down mode)
3)
MCUCR |= 0b01100000;
MCUCR &= 0b11011111;
SMCR = 0b00000101; // enable sleep mode (power-down mode)
Подскажите, пожалуйста, в чем может быть причина не отключения BOD программно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
max_mart
сообщение Aug 30 2012, 15:04
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



А как же ост. биты(IVSEL,IVCE,PUD)?
Ведь этот код:
MCUCR=(1<<BODS) | (1<<BODSE)
MCUCR=(1<<BODS)
может повлиять на них!?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 30 2012, 20:29
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (max_mart @ Aug 30 2012, 18:04) *
А как же ост. биты(IVSEL,IVCE,PUD)?
По поводу IVSEL вы сами разобрались, а по поводу PUD - в большинстве практических случаев его желаемое значение известно программисту на момент компиляции, так что же мешает вставить его сразу в эти команды записи, чтобы не вычитывать из регистра снова и снова?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016