под спойлером немного истории СпойлерСделал дочке светофор на tiny13 + 3 (светодиод + сопротивление) + 2 батарейки ААА. Делал из того что было под рукой. Выключатель не нашел и держателя для батареек тоже не было. По этому батарейки тупо паял. Светофор стоит несколько дней и непрерывно моргает. Выключить не могу. Из подходящих деталей есть еще кнопки без фиксации. Теперь собственно вопрос.
На форуме попадалась информация про разные режимы сна микросхемы tiny13. Как загнать микросхему в режим "жесткого" энергосбережения а потом ее пробудить (не снимая питания) внешней кнопкой - пусть даже через ресет. Буду благодарен за ссылки и особенно за код.
За статью спасибо. Я ее тоже нашел. Пожалуй лучшее что есть на эту тему.
Остался только вопрос.
подготавливаем в микросхему ко сну.
перед этим разрешили прерывания, настроили правильно обработку при изменении уровня на нужной ноге.
вот теперь в сон (power-down)
Дождались прерывания
Как разбудить микросхему?
ведь если просто выйти из прерывания то продолжим спать?
Иначе если разрешить прерывания то нога висящая в воздухе при определенных условиях не даст заснуть вообще.
Вы додумывает какие-то возможности МК и по сути приписываете некие "магические" способности.
Сделайте простенький проект на ассемблере. Например МК мигает светодиодом, кнопка усыпляет его, другая кнопка будит. Разобравшись с таким проектом, Вам будет понятно как все работает. А потом пишите в любой среде.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
[uquote="pyatanov",url="/forum/viewtopic.php?p=3273632#p3273632"]Остался только вопрос.[/uquote]
прерывания работают не из всех режимов энергосбережения. Насколько помню, из "глубокого сна" пробуждает только RESET и внешние прерывания INT0/PCINTx.
если нужно чтобы после отработки прерывания микроконтроллер снова уснул, просто поместите asm("sleep") в главный цикл программы.