roboforum.ru

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

 

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение executer » 01 апр 2009, 12:28

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

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

Сообщение SERGEY_M » 01 апр 2009, 12:30

Тоже вариант........
Но в Протеусе просыпается :D
может очередной глюк протеуса.........
Аватара пользователя
SERGEY_M
 
Сообщения: 682
Зарегистрирован: 20 мар 2009, 12:45
Откуда: Украина, Одесса
ФИО: Сергей

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

Сообщение executer » 01 апр 2009, 12:32

такое лучше в авр студио симулировать, там много чего не работает, но если работает - то и на МК будет
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение ferio » 01 апр 2009, 13:46

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


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

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

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

Сообщение executer » 01 апр 2009, 13:46

Можно, но из сна он выйдет только по Int0 low lewel
(в зависимости от режима сна там кажется можно и другими внешними Int будить (только сон там не такой "глубокий"), но на выбранной ноге все равно болжно быть предусмотрено прерывание, он же когда спит не может следить за обычными ногами)
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение ferio » 01 апр 2009, 13:54

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

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

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

Получается в моем случае нужно каждую кнопку еще подцеплять к ножке PD.2? я правильно понимаю?
ferio
 
Сообщения: 27
Зарегистрирован: 31 мар 2009, 09:57
Откуда: Мск

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

Сообщение executer » 01 апр 2009, 13:59

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

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

Да, так, просто это аппаратная часть отрабатывает, ее программой не измешнищ
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение ferio » 01 апр 2009, 14:14

Всем ответившим большое спасибо.
ferio
 
Сообщения: 27
Зарегистрирован: 31 мар 2009, 09:57
Откуда: Мск

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 4

Mail.ru counter