КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Особенности подключения датчиков с механическими контактами к МК
При работе МК с датчиками, имеющими механические или электромеханические контакты (кнопки, клавиши, реле, клавиатуры и т.д.), возникает явление, называемое дребезгом. Оно заключается в том, что при замыкании контактов происходит их отскок, который
приводит к переходному процессу. При этом сигнал с контакта может быть прочитан как случайная последовательность нулей и единиц (рис. 2.16). Подавить это нежелательное явление можно аппаратными либо программными способами.
1...20 мс
«1»
«0» t
Рис. 2.16. К пояснению эффекта дребезга контактов Аппаратные способы заключаются в использовании буферного RS-триггера (рис. 2.17, а) в качестве одновибратора, или фильтра нижних частот (рис. 2.17, б) для сглаживания пульсаций, следующих с периодом меньшим, чем постоянная времени фильтра.
Vпит Vпит
R1 R2
&
МК
Px.x
R1 МК
Px.x S1 S1 C1 &
а б Рис. 2.17. Способы аппаратного подавления дребезга контактов Среди программных способов наибольшее распространение получили два: 1) подсчет заданного числа совпадающих значений сигнала, 2) временная задержка. Суть первого способа заключается в многократном считывании сигнала с контакта. Подсчет удачных опросов (т.е. опросов, обнаруживших, что контакт замкнут) ведется программным счетчиком. Если после серии удачных опросов встречается неудачный, то подсчет начинается сначала. Контакт считается устойчиво замкнутым (дребезг устранен), если последовало N удачных опросов. Число N подбирается
Устранение дребезга контактов путем введения временной задержки заключается в том, что программа, обнаружив замыкание контакта, запрещает опрос состояния этого контакта на время, заведомо большее длительности переходного процесса. Время задержки подбирается экспериментально для каждого типа датчиков в пределах 1…20 мс и реализуется обычно с помощью одного из таймеров. Пример 2.1. Разработать устройство для ввода данных с клавиатуры (восемь клавиш). Время дребезга контактов tдр клавиш не превышает 1 мс. Устройство должно ожидать нажатия клавиши, после чего выводить номер нажатой клавиши на выводы одного из портов МК.
При небольшом количестве подключаемых клавиш можно воспользоваться одним из аппаратных способов подавления дребезга. Используем способ подавления дребезга с помощью простейшего ФНЧ (RC-цепочки), так как он требует меньших аппаратных затрат. Для взаимодействия с клавиатурой выберем порт D, а для вывода данных используем порт А МК. Тогда схема разрабатываемого устройства будет иметь вид, изображенный на рис. 2.18. Vпит
R1
S1 C1
PD0
PA0 PA1
ATmega16
R8
S8 C8
PD7 PA7
Рис. 2.18. Схема подключения клавиатуры
Определим номинальные значения элементов RC-цепочки. Условием стабильной фиксации логического уровня на входе МК при устранении дребезга контактов с помощью ФНЧ является
где tФНЧ
= RC tдр£ tФНЧ, (2.4) – постоянная времени ФНЧ.
Зададимся значением резисторов RC-цепочки, равным R1 – R8 = 100 кОм, тогда при tФНЧ= 1 мс должно выполняться условие С1 – С8 ≥ 0,1 мкФ. Выберем значение из стандартного ряда номиналов С1 – С8 = 0,1 мкФ. Алгоритм подпрограммы опроса клавиш для рассматриваемого случая представлен блок-схемой на рис. 2.19. Ниже приведен фрагмент программы для опроса клавиатуры, написанный на ассемблере МК ATmega16. Описание системы команд МК ATmega16 приведено в приложении В. Символ “;” указывает начало комментария. Программа выполняет циклическое сканирование клавиатуры. По окончании цикла сканирования в регистре key появляется номер нажатой клавиши. Если ни одна из клавиш не была нажата, то его значение равно нулю. Номер клавиши в виде двоичного кода выводится на выводы порта А. В инициализирующей части программы указывается, для какого устройства будет компилироваться программа, символическим именам присваиваются адреса ячеек пространства ввода/вывода, по которым хранятся соответствующие регистры управления, а также назначаются символические имена регистрам общего назначения. Это улучшает читаемость программы, так как в дальнейших выражениях позволяет использовать указанные имена вместо непосредственных значений, им присвоенных, которые являются менее информативными для пользователя.
Key_scan
Да PD0=0
Key=1
Нет Да PD1=0
Key=2
Нет
Да PD7=0
Key=8
Нет
Возврат
Рис. 2.19. Блок-схема подпрограммы сканирования клавиатуры
В начале программы должна размещаться таблица векторов прерываний, но поскольку в работе устройства прерывания не задействованы, то таблица опущена и с нулевого адреса непосредственно размещается сама программа. В основной программе используется подпрограмма, поэтому в ее начале инициализируется указатель стека. Ему присваивается значение адреса самой
старшей ячейки ОЗУ (для ATmega16 – 0х045F), тем самым указывается, что под область стека может быть использована вся доступная память ОЗУ.
;********************** Программа опроса клавиатуры ********************** .device ATmega16 ;**** Назначение символических имен **************************************
;**** Основная программа ****************************************************** .cseg .org 0
;**** Подпрограмма сканирования клавиатуры ******************************
.exit sbrs PIND,6 ;пропустить, если PIND(6) = 1 ldi key,7 ;присвоить номер нажатой клавиши sbrs PIND,7 ;пропустить, если PIND(7) = 1 ldi key,8 ;присвоить номер нажатой клавиши ret ;возврат из подпрограммы
При большом количестве клавиш (N>8) более выгодным (с точки зрения аппаратных затрат) способом реализации является матричная клавиатура (рис. 2.20). PВ0 PВ1
S1 S5 S9 S13 S2 S6 S10 S14 S3 S7 S11 S15
S4 S8 S12 S16
ATmega16
PВ7 Рис. 2.20. Схема подключения матричной клавиатуры
В этом случае изменяется алгоритм опроса клавиш. Один из способов сканирования клавиатурной матрицы заключается в следующем: изначально все выходы МК, к которым подключены строки клавиатурной матрицы, установлены в состояние лог. 0; далее один из выходов устанавливается в состояние лог. 1 и сканируются все входы МК, к которым подключены столбцы клавиатуры; пересечение строки, на которой установлена лог. 1, и столбца, на котором определена лог. 1, позволяет найти код нажатой клавиши. Для устранения дребезга при использовании матричной клавиатуры может быть использован один из программных способов (например временная задержка).
2. Классификация.
Способы реализации алгоритмов ЦОС
|