roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 13:00

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 12:28 
Не в сети
Аватара пользователя

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


Последний раз редактировалось executer 01 апр 2009, 12:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 12:30 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 12:32 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 13:46 
Не в сети

Зарегистрирован: 31 мар 2009, 09:57
Сообщения: 27
Откуда: Мск
executer писал(а):
Нужно либо сбросить флаг ИНТ1 и выставить SEI внутри прерывания, или, что лучше, внутри прерывания выставлять только свой флажок на который будет реагировать основная программа и засыпать.


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

Только такой вопрос, можно ли прерывание вызывать не только изменением напряжения на PD.2(INT0), но и вообще на любой ножке, например порта D ? Интерисует именно вариант при пробуждении.


Последний раз редактировалось ferio 01 апр 2009, 13:47, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 13:46 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 13:54 
Не в сети

Зарегистрирован: 31 мар 2009, 09:57
Сообщения: 27
Откуда: Мск
executer писал(а):
Можно, но из сна он выйдет только по Int0 low lewel

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 13:59 
Не в сети
Аватара пользователя

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как запрограммировать "кнопку" вкл/выкл
СообщениеДобавлено: 01 апр 2009, 14:14 
Не в сети

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO