Guia definitivo para mudar o Debounce (Parte 3)
LarLar > blog > Guia definitivo para mudar o Debounce (Parte 3)

Guia definitivo para mudar o Debounce (Parte 3)

Jun 15, 2024

Na Parte 1 desta minissérie, introduzimos o conceito de switch bounce; isto é, quando abrimos (desativamos) ou fechamos (ativamos) um switch, ele pode fazer múltiplas transições antes de eventualmente se estabelecer em seu novo estado (veja também minhas colunas Switch Types e Switch Terminology). Também observamos que isso ocorre em interruptores de alternância, interruptores basculantes, interruptores de botão e assim por diante - praticamente tudo, exceto os interruptores que a maioria de nós nunca usa, como interruptores de inclinação de mercúrio, por exemplo.

Na Parte 2, nos aprofundamos no ressalto associado às chaves seletoras de pólo único, movimento único (SPST) e pólo único, movimento duplo (SPDT), incluindo alguns dados empíricos sobre por quanto tempo o salto do interruptor pode persistir, qual a largura do pulsos de salto individuais podem ser e quantos saltos podemos esperar ver. Além disso, introduzimos o ponto de que qualquer técnica que usarmos para lidar com o salto do switch – pré-processando o sinal no hardware ou pós-processando-o no software – é importante que a técnica não seja enganada pela “falha” ou “pico” de ruído ocasional. causada por diafonia, EMI (interferência eletromagnética), RFI (interferência de radiofrequência) ou ESD (descarga eletrostática).

A solução switch bounce não deve ser enganada pelo ruído (Fonte da imagem: Max Maxfield)

Neste diagrama, o resistor R1 atua como um resistor pull-up. Quando a chave está aberta, R1 puxa o sinal NO até um valor +ve (lógico 1). Quando a chave é fechada, ela causa um curto-circuito no sinal NO para 0V (lógico 0).

Agora, na Parte 3, chegamos ao ponto onde “a borracha encontra a estrada”, falando metaforicamente. É aqui que começamos a considerar várias soluções para nossos switches saltitantes.

Hardware vs. Software (um pouco de história)

Quando os microprocessadores surgiram pela primeira vez, por volta do início e meados da década de 1970, havia um número relativamente grande de engenheiros de design de hardware eletrônico por aí, mas relativamente poucos desenvolvedores de software, e a maioria dos rapazes e moças que conheciam o software trabalhavam no “grande”. ferro” em computadores mainframe ou em minicomputadores.

Os microprocessadores daquela época eram limitados em termos de memória e ciclos de clock (isto é, eles tinham frequências de clock relativamente baixas, portanto cada ciclo de clock era valorizado). Muita programação foi meticulosamente executada usando linguagem assembly e - apenas para aumentar a diversão e a frivolidade - grande parte do código foi criada pelos engenheiros de design de hardware que normalmente não estavam familiarizados com programação em geral e com boas práticas de programação em particular.

Tudo o que foi dito acima explica por que muitas das primeiras soluções para o problema do switch bounce eram baseadas em hardware – mas espere, há mais…

A série 74xx de circuitos integrados de lógica transistor-transistor (TTL) da Texas Instruments (TI) apareceu pela primeira vez em meados da década de 1960. Na década de 1970, as placas de circuito impresso (PCBs) utilizadas por esses dispositivos — e famílias semelhantes de outros fornecedores — eram onipresentes.

Cada dispositivo 74xx normalmente continha um punhado de portas ou funções lógicas jellybean. Por exemplo, o 7400 continha quatro portas NAND de 2 entradas; o 7474 continha dois flip-flops tipo D acionados por borda positiva, cada um com seu próprio preset assíncrono e clear; e o 74118 continha seis travas SR.

A questão é que uma PCB poderia conter centenas desses dispositivos 74xx e, quase invariavelmente, havia funções que não eram utilizadas – uma porta NAND aqui, uma trava SR ali, talvez até mesmo um flip-flop tipo D que não foi contabilizado.

Os engenheiros de projeto de hardware consideraram essas funções lógicas não comprometidas como um “jogo justo” para uso no debounce de seus switches. Uma pequena “mosca na sopa”, por assim dizer, é que não era incomum acabar com cada chave sendo desfeita usando uma técnica diferente, dependendo de quem estava fazendo o projeto e quais portas lógicas e funções restantes estavam disponíveis. .

Com o tempo, a lógica digital foi cada vez mais consolidada em cada vez menos dispositivos, reduzindo assim a quantidade de funções simples de “lógica de colagem” que estavam sendo utilizadas. Além disso, o tamanho da memória dos microprocessadores cresceu, as frequências de clock aumentaram e mais e mais pessoas começaram a desenvolver software.