Полное руководство по переключению Debounce (часть 3)
ДомДом > Блог > Полное руководство по переключению Debounce (часть 3)

Полное руководство по переключению Debounce (часть 3)

Jun 15, 2024

В первой части этого мини-сериала мы представили концепцию дребезга переключателя; то есть, когда мы открываем (деактивируем) или закрываем (активируем) переключатель, он может совершать несколько переходов, прежде чем в конечном итоге перейдет в новое состояние (см. также мои столбцы «Типы переключателей» и «Терминология переключателей»). Мы также отметили, что это происходит с тумблерами, кулисными переключателями, кнопочными переключателями и т. д. — практически со всем, кроме переключателей, которые большинство из нас никогда не используют, например, с ртутными переключателями наклона.

В части 2 мы более подробно рассмотрели подпрыгивание, связанное с однополюсными, однопозиционными (SPST) и однополюсными, двухпозиционными (SPDT) тумблёрами, включая некоторые эмпирические данные о том, как долго может сохраняться дребезг выключателя, какова ширина могут быть отдельные импульсы отскока, и сколько отскоков мы можем ожидать увидеть. Кроме того, мы отметили, что какой бы метод мы ни использовали для устранения дребезга переключателя – предварительная аппаратная обработка сигнала или последующая его программная обработка – важно, чтобы этот метод не был обманут случайными шумовыми «сбоями» или «всплесками». вызваны перекрестными помехами, EMI (электромагнитными помехами), RFI (радиочастотными помехами) или ESD (электростатическим разрядом).

Решение дребезга переключателя не должно быть обмануто шумом (Источник изображения: Макс Максфилд)

На этой схеме резистор R1 действует как подтягивающий резистор. Когда переключатель разомкнут, R1 повышает сигнал NO до значения +ve (логическая 1). Когда переключатель замкнут, он замыкает сигнал NO на 0 В (логический 0).

Теперь, в части 3, мы подошли к моменту, когда «резина встречается с дорогой», образно говоря. Здесь мы начинаем рассматривать различные решения для наших прыгающих переключателей.

Аппаратное обеспечение против программного обеспечения (немного истории)

Когда микропроцессоры впервые появились на сцене примерно в начале и середине 1970-х годов, вокруг было относительно большое количество инженеров-проектировщиков электронного оборудования, но относительно мало разработчиков программного обеспечения, и большинство парней и девчонок, которые знали программное обеспечение, работали над «большими проектами». «железо» на мэйнфреймах или на миникомпьютерах.

Микропроцессоры того времени были ограничены в плане памяти и тактовых циклов (т. е. имели относительно низкие тактовые частоты, поэтому ценился каждый тактовый цикл). Большая часть программирования тщательно выполнялась на языке ассемблера, и — просто для увеличения удовольствия и легкомыслия — большая часть кода была создана инженерами-проектировщиками аппаратного обеспечения, которые обычно не были знакомы с программированием в целом и с хорошими практиками программирования в частности.

Все вышесказанное объясняет, почему многие из ранних решений проблемы дребезга переключателя были аппаратными — но подождите, это еще не все…

Серия 74xx интегральных схем транзисторно-транзисторной логики (TTL) от Texas Instruments (TI) впервые появилась на сцене в середине 1960-х годов. К 1970-м годам печатные платы (PCB), заполненные этими устройствами, а также аналогичные семейства от других производителей, были распространены повсеместно.

Каждое устройство 74xx обычно содержало несколько желейных логических элементов или функций. Например, 7400 содержал четыре вентиля И-НЕ с двумя входами; 7474 содержал два триггера D-типа, запускаемых по положительному фронту, каждый со своей собственной асинхронной предустановкой и очисткой; а 74118 содержал шесть защелок SR.

Дело в том, что печатная плата могла содержать сотни таких устройств 74xx, и почти всегда оставались неиспользованные функции — здесь вентиль И-НЕ, там защелка SR, возможно, даже неучтенный триггер D-типа.

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

Со временем цифровая логика все больше и больше объединялась во все меньшее количество устройств, тем самым уменьшая количество простых функций «связывающей логики», которые оставались запасными. Кроме того, увеличился объем памяти микропроцессора, увеличилась тактовая частота, и все больше и больше людей начали разрабатывать программное обеспечение.