roboforum.ru

Технический форум по робототехнике.

Как запрограммировать "кнопку" вкл/выкл

Re: Как запрограммировать "кнопку" вкл/выкл

executer » 01 апр 2009, 12:28

А как он может проснутся если засыпает внутри прерывания? При начале прерывания глобальный флаг разрешения прерываний сбрасывается и до самого окончания прерывания никакое другое событие по прерываниям не отрабатывается (в том числе и просыпание по прерыванию).
Нужно либо сбросить флаг ИНТ1 и выставить SEI внутри прерывания, или, что лучше, внутри прерывания выставлять только свой флажок на который будет реагировать основная программа и засыпать.
Последний раз редактировалось executer 01 апр 2009, 12:30, всего редактировалось 1 раз.

Re: Как запрограммировать "кнопку" вкл/выкл

SERGEY_M » 01 апр 2009, 12:30

Тоже вариант........
Но в Протеусе просыпается :D
может очередной глюк протеуса.........

Re: Как запрограммировать "кнопку" вкл/выкл

executer » 01 апр 2009, 12:32

такое лучше в авр студио симулировать, там много чего не работает, но если работает - то и на МК будет

Re: Как запрограммировать "кнопку" вкл/выкл

ferio » 01 апр 2009, 13:46

executer писал(а):Нужно либо сбросить флаг ИНТ1 и выставить SEI внутри прерывания, или, что лучше, внутри прерывания выставлять только свой флажок на который будет реагировать основная программа и засыпать.


Спасибо, сделал именно так - все заработало.

Только такой вопрос, можно ли прерывание вызывать не только изменением напряжения на PD.2(INT0), но и вообще на любой ножке, например порта D ? Интерисует именно вариант при пробуждении.
Последний раз редактировалось ferio 01 апр 2009, 13:47, всего редактировалось 1 раз.

Re: Как запрограммировать "кнопку" вкл/выкл

executer » 01 апр 2009, 13:46

Можно, но из сна он выйдет только по Int0 low lewel
(в зависимости от режима сна там кажется можно и другими внешними Int будить (только сон там не такой "глубокий"), но на выбранной ноге все равно болжно быть предусмотрено прерывание, он же когда спит не может следить за обычными ногами)

Re: Как запрограммировать "кнопку" вкл/выкл

ferio » 01 апр 2009, 13:54

executer писал(а):Можно, но из сна он выйдет только по Int0 low lewel

То есть проснется только от ножки PD.2/int0(Mega16)? И никак по другому запрограммировать нельзя?

Просто задача у меня следующая, нужно сделать пульт ДУ, с 6 кнопками. Пока не одна из кнопок не нажата МК спит(режим powerdown - как самый экономичный), только стоит нажать одну из кнопок МК просыпается, выполняет команду и снова засыпает.

Получается в моем случае нужно каждую кнопку еще подцеплять к ножке PD.2? я правильно понимаю?

Re: Как запрограммировать "кнопку" вкл/выкл

executer » 01 апр 2009, 13:59

да, я ничего кроме как пустить все 6 кнопок через логическое ИЛИ на INT0 придумать ничего не могу

Добавлено спустя 1 минуту 52 секунды:
ferio писал(а):То есть проснется только от ножки PD.2/int0(Mega16)? И никак по другому запрограммировать нельзя?

Да, так, просто это аппаратная часть отрабатывает, ее программой не измешнищ

Re: Как запрограммировать "кнопку" вкл/выкл

ferio » 01 апр 2009, 14:14

Всем ответившим большое спасибо.


Rambler\'s Top100 Mail.ru counter