Внешние прерывания
 

Внешние прерывания  

  RSS

ALEXENG
(@alexeng)
Новичок
Присоединился: 10 лет назад
Сообщения: 4
12/01/2010 2:58 пп  

Добрый день уважаемые микроконтроллерные деды!
Кто подскажет: как грамотно сделать обработчик прерываний по INT0 и INT1 в ATtiny2313 на Ассемблере.
В основном интересует как устранить "дребезг контактов" от кнопок, подключенных к этим выводам.
Сколько не "лазил" в И-Нете ничего вразумительного не нашел.
Заранее благодарю


Цитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 11 лет назад
Сообщения: 144
12/01/2010 7:37 пп  

Здравствуйте.
Не могу сказать, что грамотно, но делаю так. Предположим, что кнопки коммутируют вход INT0(INT1) на общий.
*Разрешаю прерывания по спаду сигнала и жду. При нажатии кнопки, в обработчике прерывания перевожу соответствующую лапу на вывод 0. Таким образом блокируется "дребезг" при нажатии. Далее следует выход из обработчика, но с установленным флагом PORTD2(3)=0. Программа в основном цикле анализирует состояние этих лап, делает необходимые действия, дополнительно делается задержка порядка 20...30 мс и только затем лапа переводится на вход, но с разрешением по фронту сигнала. При отпускании кнопки первый же фронт вызывает прерывание, лапа переводится на вывод 1, затем, в основном цикле, через 20...30 мс программа переходит на *.
Но использовать прерывания для анализа состояния кнопок считаю большим расточительством. Все равно приходится вводить задержки или программные или таймерные или организовывать счетчики со сбросом при появлении запрещенного состояния кнопки.


ОтветитьЦитата
ALEXENG
(@alexeng)
Новичок
Присоединился: 10 лет назад
Сообщения: 4
13/01/2010 2:21 дп  

Спасибо за ответ. Немного просветили. Я, к сожалению, недавно занялся МК, поэтому сложности возникают :D
Если можно, то дайте пару фрагментов на asm для работы с кнопками.
Буду очень признателен. Да и может, когда разберусь с контроллерами, то и Вам чего подскажу :lol:
Мой E-mail ALEXANENG@yandex.ru
В принципе, я давно занимаюсь электроникой(но не МК, а RF и силовой электроникой до 100А 600В включительно), так что если есть вопросы - задавайте. С удовольствием отвечу :)


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 11 лет назад
Сообщения: 144
13/01/2010 1:32 пп  

Здравствуйте.
Уже очень давно не применял прерывания INT0 и INT1 для обработки кнопок. Из того, что имеется выкладываю программу обработки сигналов энкодера, взятую отсюда http://radiokot.ru/articles/27 . Это не совсем то, что Вам нужно, но в программе ведется обработка обоих фронтов сигнала и может сгодится для примера.


ОтветитьЦитата
ALEXENG
(@alexeng)
Новичок
Присоединился: 10 лет назад
Сообщения: 4
13/01/2010 4:01 пп  

Спасибо akl! Статья интересная. Буду пробовать писать свой код.


ОтветитьЦитата
DennisSoK
(@dennissok)
Новичок
Присоединился: 4 года назад
Сообщения: 3
21/01/2016 6:42 пп  

Здравствуйте. Вопрос в следующем. Можно использовать прерывание по таймеру дважды. То есть допустим выполнять действие 1 через 3 минуты и действие 2 через 5 минут. Если можно, то с примерами. Заранее спасибо

Вот так вот...


ОтветитьЦитата

Пожалуйста, Вход или Зарегистрироваться