Страница 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 нужно выходить только после устойчивой стабилизации частоты тактового генератора.