Страница 1 из 1

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

Добавлено: Пн янв 01, 2018 11:16:16
pyatanov
Добрый день.

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

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

Добавлено: Пн янв 01, 2018 19:25:34
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

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

Добавлено: Вт янв 02, 2018 11:18:11
pyatanov
Да attiny13a.

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

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

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

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

или я не прав?

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

Добавлено: Вт янв 02, 2018 11:29:35
city77
... прерывание будит МК.

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

Добавлено: Вт янв 02, 2018 11:32:05
Z_h_e
В сон МК уходит после выполнения команды sleep, т.е. если он проснулся, то без команды не уснет.

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

Добавлено: Вт янв 02, 2018 11:32:27
Flasher

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

Добавлено: Вт янв 02, 2018 11:37:41
Z_h_e
Вы додумывает какие-то возможности МК и по сути приписываете некие "магические" способности.
Сделайте простенький проект на ассемблере. Например МК мигает светодиодом, кнопка усыпляет его, другая кнопка будит. Разобравшись с таким проектом, Вам будет понятно как все работает. А потом пишите в любой среде.

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

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

если нужно чтобы после отработки прерывания микроконтроллер снова уснул, просто поместите asm("sleep") в главный цикл программы.

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

Добавлено: Вт янв 02, 2018 17:19:43
akl
Как насчет ввести в программу asm("SEI")?
Из POWER DOWN нужно выходить только после устойчивой стабилизации частоты тактового генератора.