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

по МК и не только

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

Сообщение ALEXENG » 12 янв 2010, 12:58

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

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

Сообщение akl » 12 янв 2010, 17:37

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

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

Сообщение ALEXENG » 13 янв 2010, 00:21

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

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

Сообщение akl » 13 янв 2010, 11:32

Здравствуйте.
Уже очень давно не применял прерывания INT0 и INT1 для обработки кнопок. Из того, что имеется выкладываю программу обработки сигналов энкодера, взятую отсюда http://radiokot.ru/articles/27 . Это не совсем то, что Вам нужно, но в программе ведется обработка обоих фронтов сигнала и может сгодится для примера.
Вложения
encoder.rar
(989 байт) Скачиваний: 933
akl
 
Сообщения: 143
Зарегистрирован: 21 дек 2008, 07:27
Откуда: Ижевск

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

Сообщение ALEXENG » 13 янв 2010, 14:01

Спасибо akl! Статья интересная. Буду пробовать писать свой код.
ALEXENG
 
Сообщения: 4
Зарегистрирован: 12 янв 2010, 12:40


Вернуться в Общие вопросы



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

Зарегистрированные пользователи: Bing [Bot]