Внешние прерывания
 
Уведомления
Очистить все

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

6 Посты
3 Пользователи
0 Likes
10.2 Тыс. Просмотры
ALEXENG
(@alexeng)
New Member
Присоединился: 14 лет назад
Сообщения: 4
Topic starter  

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


Цитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

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


ОтветитьЦитата
ALEXENG
(@alexeng)
New Member
Присоединился: 14 лет назад
Сообщения: 4
Topic starter  

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


ОтветитьЦитата
akl
 akl
(@akl)
Estimable Member
Присоединился: 15 лет назад
Сообщения: 144
 

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


ОтветитьЦитата
ALEXENG
(@alexeng)
New Member
Присоединился: 14 лет назад
Сообщения: 4
Topic starter  

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


ОтветитьЦитата
DennisSoK
(@dennissok)
New Member
Присоединился: 8 лет назад
Сообщения: 3
 

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

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


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