Курс лекций. - Микропроцессоры


Написание программы для микропроцессорного устройства - часть 11


Рассмотрим подробнее механизм возникновения явления дребезга контактов. Дребезг контактов возникает из-за упругости самих контактов. При нажатии на кнопку или при срабатывании какого-либо датчика контакт ударяется о другой контакт и снова отлетает от него. Процесс может повториться несколько раз. При этом количество замыканий и размыканий контактов случайно и зависит от упругости контактов и механической силы, воздействующей на эти контакты. Обычно этот процесс длится от одной до восьми миллисекунд.

То есть, если мы будем опрашивать состояние контактов с периодом, превышающим максимальную длительность дребезга контактов, то мы даже не заметим, что контакты замыкались или размыкались в промежутке между опросами контактов. В нашем примере один проход по циклу программ соответствует 50 мс, что заведомо превышает время дребезга контактов.

Пример временной диаграммы сигнала на контактах кнопки приведен на рис. 9.27. На этой временной диаграмме четко просматривается зона дребезга контактов. Для иллюстрации эффекта подавления дребезга контактов за счет ввода информации в строго определенные моменты времени, на этой временной диаграмме выбран наихудший случай момента взятия отсчета. Этот момент совпадает с зоной дребезга контактов. При этом на выводе порта микроконтроллера может быть считан сигнал логического нуля или логической единицы. Но даже в этом случае дополнительного импульса не возникает! Дребезг контактов приводит только к неопределенности определения времени нажатия кнопки, который не превышает времени реакции системы.

Рисунок 9.27. Временные диаграммы напряжения на контактах кнопки и сигнала, введенного в микроконтроллер.

Новый вариант программы с включенной в цикл подпрограммой опроса кнопок блока коррекции времени приведен на рисунке 9.28. Для хранения состояния кнопок в этой программе пришлось ввести новую переменную. В программе мы не будем использовать битовое пространство. Это позволит увеличить глубину стека и не вводить ещё один сегмент данных.




Начало  Назад  Вперед



Книжный магазин