tiny13 в режиме энергосбережения

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 6
Зарегистрирован: Вс ноя 26, 2017 22:11:30

Сообщение pyatanov »

Добрый день.

под спойлером немного истории
СпойлерСделал дочке светофор на tiny13 + 3 (светодиод + сопротивление) + 2 батарейки ААА. Делал из того что было под рукой. Выключатель не нашел и держателя для батареек тоже не было. По этому батарейки тупо паял. Светофор стоит несколько дней и непрерывно моргает. Выключить не могу. Из подходящих деталей есть еще кнопки без фиксации. Теперь собственно вопрос.
На форуме попадалась информация про разные режимы сна микросхемы tiny13. Как загнать микросхему в режим "жесткого" энергосбережения а потом ее пробудить (не снимая питания) внешней кнопкой - пусть даже через ресет. Буду благодарен за ссылки и особенно за код.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 333
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

Простите, вы используете именно attiny13 или что-то вроде attiny13a/attiny13v?

для attiny13a "глубокий сон" вызывается так

Код: Выделить всё

        PRR = (1<<PRADC); // shut down ADC
        MCUCR |= (1<<SM1); 
        MCUCR &= ~(1<<SM0); 
        MCUCR |= (1<<SE); 
        asm("sleep");
про энергосбережение можно почитать здесь:
http://we.easyelectronics.ru/AVR/avr-po ... -spat.html
Реклама
Родился
Сообщения: 6
Зарегистрирован: Вс ноя 26, 2017 22:11:30

Сообщение pyatanov »

Да attiny13a.

За статью спасибо. Я ее тоже нашел. Пожалуй лучшее что есть на эту тему.

Остался только вопрос.

подготавливаем в микросхему ко сну.
перед этим разрешили прерывания, настроили правильно обработку при изменении уровня на нужной ноге.
вот теперь в сон (power-down)

Дождались прерывания
Как разбудить микросхему?
ведь если просто выйти из прерывания то продолжим спать?
Иначе если разрешить прерывания то нога висящая в воздухе при определенных условиях не даст заснуть вообще.

или я не прав?
Открыл глаза
Сообщения: 53
Зарегистрирован: Чт дек 28, 2017 23:07:31

Сообщение city77 »

... прерывание будит МК.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

В сон МК уходит после выполнения команды sleep, т.е. если он проснулся, то без команды не уснет.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вы додумывает какие-то возможности МК и по сути приписываете некие "магические" способности.
Сделайте простенький проект на ассемблере. Например МК мигает светодиодом, кнопка усыпляет его, другая кнопка будит. Разобравшись с таким проектом, Вам будет понятно как все работает. А потом пишите в любой среде.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 333
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

[uquote="pyatanov",url="/forum/viewtopic.php?p=3273632#p3273632"]Остался только вопрос.[/uquote]
прерывания работают не из всех режимов энергосбережения. Насколько помню, из "глубокого сна" пробуждает только RESET и внешние прерывания INT0/PCINTx.

если нужно чтобы после отработки прерывания микроконтроллер снова уснул, просто поместите asm("sleep") в главный цикл программы.
akl
Друг Кота
Сообщения: 4450
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Как насчет ввести в программу asm("SEI")?
Из POWER DOWN нужно выходить только после устойчивой стабилизации частоты тактового генератора.
Ответить

Вернуться в «AVR»