banner
Nachrichtenzentrum
Erstklassige After-Sales-Unterstützung

Ultimativer Leitfaden zum Switch Debounce (Teil 6)

Jun 08, 2024

Vor langer Zeit, als ich strahlende Augen und einen buschigen Schwanz hatte, als ich die ersten Worte in dieser Suche schrieb, um das Thema Switch-Bounce und -Debounce zu erkunden, dachte ich eigentlich, es würde nur einen, vielleicht zwei brauchen, Säulen. Es ist traurig, das zu erzählen: Als die Tage zu Wochen und die Wochen zu Monaten wurden, wurde ich zu einem viel traurigeren und weiseren Mann.

Ich kann nicht glauben, dass wir jetzt bei Teil 6 sind. Während ich hier an meinem Küchentisch sitze (siehe auch Kevins Work from Home Survival Guide) und mutig versuche, vor meinem Monitor zu starren, gehe ich davon aus, dass dies der letzte Teil sein wird Serie, aber ich weiß nie genau, was ich schreiben werde, bis mir die Worte aus den Fingerspitzen tropfen, wo diese fröhlichen und flotten kleinen Schönheiten (die Worte, nicht meine Fingerspitzen) im Morgengrauen frisch gepflückt werden Die Nordseite des Hügels, während der Morgentau noch auf ihren kecken und frechen Serifen, Sporen und Enden glitzert. Das Fazit ist, dass wir alle warten müssen, bis wir das Ende dieser Kolumne erreicht haben, um zu sehen, ob es wirklich das Ende der Serie ist. („Dum dum dum duuuuuuum… Dum dum dum duuuuuuum…“ Die Spannung steigt.)

Bevor wir uns voller Elan und Hingabe kopfüber ins Getümmel stürzen, erinnern wir uns kurz daran, wie wir in unseren Überlegungen zu diesem Punkt gelangt sind. In Teil 1 haben wir das Konzept des Switch Bounce eingeführt. Später, in Teil 2, haben wir uns eingehender mit dem Springen befasst, das mit einem einpoligen Kippschalter (SPST) und einem einpoligen Kippschalter (SPDT) verbunden ist.

In Teil 3 haben wir damit begonnen, über Hardwarelösungen zur Schalterprellung nachzudenken. Dabei begannen wir mit der Idee, ein RC-Netzwerk gefolgt von einem Schmitt-Trigger zu verwenden, um einen SPST-Kippschalter zu entprellen. In Teil 4 haben wir uns mit der Verwendung verschiedener monostabiler Multivibratoren zum Entprellen von SPST-Kippschaltern befasst (leider sind wir schließlich zu dem Schluss gekommen, dass die Verwendung monostabiler Multivibratoren kein guter Weg ist).

Zuletzt sind wir in Teil 5 auf SPDT-Kippschalter zurückgekommen und haben Entprelltechniken betrachtet, die auf Latches basieren, die mit zwei Invertern, SR-Latches (sowohl NAND- als auch NOR-basiert) und D-Typ-Latches und Flip-Flops implementiert sind.

In dieser Kolumne werfen wir einen Blick auf eine verbleibende Kategorie hardwarebasierter Entprellungslösungen in Form spezieller integrierter Schaltkreise (ICs). Wenn das Schicksal uns glücklich macht, werden wir uns auch mit der Implementierung von Entprellung in FPGA-Designs (Field Programmable Gate Array) befassen. Abschließend widmen wir uns den Software-Entprelltechniken.

Wenn Ihnen irgendetwas davon nicht vertraut ist, dann werfen Sie vielleicht einen Blick auf meine zugehörigen Spalten „Switch-Typen“ und „Switch-Terminologie“. Vielleicht möchten Sie auch meine Kolumne „Register vs. Latches vs. Flip-Flops“ lesen und darüber nachdenken. Zu guter Letzt weisen Kippschalter, Wippschalter und Drucktastenschalter, wie bereits erwähnt, alle einen Schaltersprung auf ziemlich die gleiche Weise auf. Tatsächlich sind die einzigen Schalter, die nicht springen, diejenigen, die die meisten von uns selten oder nie verwenden, wie zum Beispiel Quecksilber-Neigungsschalter.

Charakterisierung des Systems

Bevor wir tiefer in die Tiefe gehen, und während ich darüber nachdenke, erwähnte er, als ich mich vor ein paar Wochen mit dem Embedded-Guru Jack Ganssle unterhielt, seine Empfehlung an alle, die an der Entwicklung eines Systems beteiligt sind – insbesondere an Leute, die geschäftskritische und geschäftskritische Systeme entwerfen sicherheitskritische Systeme – besteht darin, dass sie die Schalter charakterisieren, die sie verwenden möchten, bevor sie sie in einer ahnungslosen Welt einsetzen.

Sowohl für Hardware-Designer als auch für Software-Entwickler ist es allzu leicht, auf „bewährte“ Lösungen zurückzugreifen, ohne die Dinge vollständig durchdacht zu haben. Beispielsweise erwähnte Jack in Teil 1 von Jacks klassischem Leitfaden zur Entprellung eine Art Schalter, bei dem Goldkontakte auf einer Leiterplatte (PCB) angebracht waren. Zugehörig war eine Gummiabdeckung, die – wenn sie heruntergedrückt wurde – eine Art leitfähiges Elastomer an die Goldkontakte abgab. Jack bemerkte, dass das analoge Ergebnis ein langsamer Anstieg von null auf fünf Volt war, ohne Rauschen, Wischen oder andere Unsicherheiten und ohne eine Spur von Sprung. Als dieses Signal an einen TTL-Eingang angelegt wurde, führte sein langsamer Anstieg über die „verbotene Zone“ (0,8 bis 2,0 V) leider zu wilden Schwingungen von einer Millisekunde (ms), die man als „virtuelle Sprünge“ betrachten könnte.

Dedizierte Entprellungschips: Auf Halbleiter

Neben Jellybean-Logikchips mit SR-Latches – wie dem Quad-NOR-basierten SR-Latch MC14043 und dem Quad-NAND-basierten SR-Latch MC14044 von On Semiconductor – gibt es auf dem Markt einige speziell entwickelte Switch-Debounce-Chips.

Ein solches Gerät ist der MC14490 von On Semiconductor, der sechs Kanäle (SPST-Schalter) unterstützt, von denen jeder ein 4-Bit-Schieberegister verwendet. Dieses Gerät benötigt für seinen Betrieb eine Uhr. Der Takt kann von einem internen RC-Oszillator abgeleitet werden, der einen externen Kondensator zur Anpassung an die gewünschte Betriebsfrequenz (Bounce-Verzögerung) erfordert. Alternativ kann der Takt von einer externen Quelle angesteuert werden, einschließlich des Oszillators von einem anderen MC14490.

Dedizierte Entprellungschips: Maxim Integrated

Eine weitere Option ist die Verwendung eines der MAX6816/MAX6817/MAX6818-Geräte von Maxim Integrated, die einen, zwei bzw. acht Kanäle unterstützen, wobei jeder Kanal einen internen Zähler verwendet. Diese Geräte verhindern das Prellen beim Öffnen oder Schließen eines Schalters, indem sie erfordern, dass das Signal vom Schalter über mehrere Abtastperioden hinweg im gleichen Zustand bleibt. Der Ausgang ändert sich erst, wenn der Eingang 40 ms lang stabil war. Ein Problem besteht darin, dass diese Chips nur als SMDs (Surface Mount Devices) erhältlich sind, viele Bastler – und sogar Prototyping-Profis – jedoch gerne Zugriff auf Komponenten mit Lead-Through-Hole-Gehäusen (LTH) haben.

Abgesehen davon: Wenn wir Softwarelösungen für das Switch-Bounce-Problem in Betracht ziehen, beinhaltet eine dieser Lösungen eine Schieberegistertechnik, während eine andere einen zählerbasierten Ansatz verwendet. Der Grund, warum ich dies hier erwähne, ist, dass wir beide Methoden in den oben genannten Geräten in Hardware implementiert sehen.

Spezielle Entprellungschips: Texas Instruments

Um ehrlich zu sein, weiß man nie, was hinter der nächsten Ecke lauert. Als Beispiel schrieb mir mein Kumpel Jack Grubbs im Anschluss an eine frühere Kolumne eine E-Mail mit den Worten: „Hallo Max, ich genieße diese Artikelserie zum Thema Schalter-Entprellung wirklich.“

Das hat mir sofort gute Laune gemacht und wir hatten offensichtlich einen guten Start, was den E-Mail-Austausch angeht. Jack fuhr fort: „Der TIC12400-Q1 von Texas Instruments (TI) ist ein Gerät für die Automobilindustrie, das 24 Schalter mit konfigurierbaren Benetzungsstromeinstellungen überwachen kann.“ Es verfügt außerdem über einen integrierten 10-Bit-Analog-Digital-Wandler (ADC) zur Verwendung mit Analogschaltern mit mehreren Positionen sowie einen integrierten Komparator mit vier programmierbaren Schwellenwerten für die Überwachung digitaler Schalter. Sie haben außerdem ein Evaluierungsmodul-Kit für 199 US-Dollar sowie ein Benutzerhandbuch für dieses Evaluierungskit. Der größte Nachteil dieses Geräts ist, dass das Datenblatt 135 Seiten lang ist!“

Dedizierte Entprellungschips: LogiSwitch

Bevor wir fortfahren, muss ich zugeben, dass ich hier etwas voreingenommen bin, da ich derzeit in allen meinen Projekten die Switch-Debounce-Chips von LogiSwitch verwende. Nebenbei bemerkt, der Gründer von LogiSwitch, mein Kumpel Mike Pelkey, ist der Großvater des BASE-Jumpings; Das heißt, Fallschirmspringen von einer festen Struktur aus, wobei BASE ein Akronym für Gebäude, Antenne, Spanne (Brücke) und Erde (Klippe) ist. Zusammen mit seinem Freund Brian Schubert machte Mike 1966 die ersten Fallschirmsprünge vom Gipfel des El Capitan-Berges im Yosemite-Nationalpark. Aber wir schweifen ab …

Während seiner mehr als 40-jährigen Tätigkeit als Designer digitaler Systeme litt Mike – wie fast jeder andere Hardware-Designer auf der Welt – unter dem Problem des Switch-Bounce. Nachdem er praktisch alle der Menschheit bekannten Versionen herkömmlicher Hardware- und Software-basierter Switch-Bounce-Abwehrtechniken eingesetzt hatte, kam Mike zu dem Schluss, dass es einen besseren Weg geben musste.

Das Ergebnis von Mikes Überlegungen und Grübeleien war das LogiSwitch-Konzept. Mit adaptiven Bounce-Erkennungsalgorithmen und (im Fall der LS1xx-Serie) einem einzigartigen 1-Wire-Handshaking-Protokoll spiegeln diese großartigen Schönheiten den aktuellen Stand der Switch-Bounce-Minderungstechnologie wider.

Beginnen wir mit den LS18/LS19/LS20-Chips mit hoher Störfestigkeit, die jeweils 3, 6 und 9 Kanäle verarbeiten können. Glücklicherweise sind für mich alle diese Geräte sowohl im SMT- als auch im LTH-Gehäuse erhältlich. Betrachten Sie die folgende Schaltung mit einem LS18:

Der LogiSwitch LS18 im Schaltkreis (Bildquelle: Max Maxfield)

Beachten Sie, dass wir an den Eingängen (oder Ausgängen) des LS18 keine Pull-up-Widerstände benötigen, da dieser Chip dies alles intern erledigt. Der 0,1-uF-Entkopplungskondensator ist optional, bietet jedoch eine erhöhte Störfestigkeit. Wir zeigen hier nur einen einzelnen SPST-Schalter, der LS18 bietet jedoch Platz für drei solcher Schalter. Betrachten Sie nun ein typisches Switch-Bounce-Szenario wie unten dargestellt:

LogicSwitch LS18 reagiert auf Rauschen und Schalterprellen (Bildquelle: Max Maxfield)

Wie wir sehen, unterdrückt der LS18 jegliche Geräuschspitzen. Im Falle eines tatsächlichen Schalterübergangs folgt der Ausgang des LS18 dem Eingang des Schalters 20 ms nach dem letzten Schaltersprung.

Schauen wir uns nun die schnell reagierenden LS118/LS119/LS120-Chips an. Auch diese können jeweils 3, 6 und 9 Kanäle verarbeiten. Und wiederum sind alle diese Geräte sowohl im SMT- als auch im LTH-Gehäuse erhältlich. Betrachten wir zunächst ein typisches Switch-Bounce-Szenario mit einem LS118-Chip, wie unten dargestellt:

Der LogicSwitch LS118-Chip reagiert auf Schalterprellen, nutzt jedoch seine Handshake-Fähigkeit nicht (Bildquelle: Max Maxfield)

Beachten Sie, dass der „normalerweise niedrige/Handshake“-Ausgang (NL/HS) die entgegengesetzte Phase zum Schaltereingang hat; Das heißt, wenn der Schalter an 0 V (logisch 0) angeschlossen ist, ist der NL/HS-Ausgang logisch 1 und umgekehrt.

Der NL-Teil des Spitznamens dieses Pins basiert auf der Annahme, dass es sich um einen SPST-Schalter handelt, dessen „normalerweise offener“ (NO) Kontakt auf logisch 1 hochgezogen ist (auch hier verwaltet der LS118-Chip die Pull-up-Widerstände intern). ). Wenn der Schalter also inaktiv ist (logisch 1), ist der NL/HS-Ausgang logisch 0.

Hier sind zwei wichtige Dinge zu beachten. Erstens reagiert der NL/HS-Ausgang nach einem Übergang am Schalter fast sofort (innerhalb von Nanosekunden). Zweitens reagiert der LS118 erst 20 ms nach dem letzten Schalterprellen auf nachfolgende Ereignisse am Eingang.

Setzen Sie sich jetzt auf und seien Sie aufmerksam, denn hier wird es sehr interessant. Die LS118/119/120-Chips verfügen über ein einzigartiges 1-Wire-Handshaking-Protokoll. Wenn der Mikrocontroller (MCU) „sieht“, dass eines der NL/HS-Signale auf High geht, kann er diesen Eingangspin in einen Ausgang umwandeln, das Signal für 50 Mikrosekunden (µs) auf Low ziehen und den Pin dann wieder in einen Eingang verwandeln.

Die Ausgänge des LS118 sind Open-Collector-Ausgänge mit internen Pullups. Wenn der LS118 erkennt, dass die MCU einen seiner Ausgänge auf Low zieht, beginnt er, diesen Ausgang selbst auf Low zu treiben. Das Ergebnis ist wie folgt:

Der LogicSwitch LS118-Chip reagiert auf Schalterprellen und nutzt seine Handshake-Fähigkeit (Bildquelle: Max Maxfield)

Diese Handshake-Fähigkeit ist aus mehreren Gründen von Interesse. Stellen Sie sich zum Beispiel ein Programm vor, das in einer Schleife den Zustand eines Schalters überprüft und eine Aktion ausführt wie: „Wenn das NL/HS-Signal 1 ist, dann addieren Sie eins zum Zähler.“

Ohne unsere Handshake-Fähigkeit muss der Programmierer ein Flag setzen, um zu verfolgen, wann der Schalter aktiviert wurde, um sicherzustellen, dass das Programm den Zähler nicht ständig erhöht. Das ist kein Hexenwerk, aber es gibt noch einen Grund zur Sorge. Im Vergleich dazu macht der Händedruck das Leben viel einfacher. Wenn in unserem Beispiel die MCU erkennt, dass NL/HS auf High geht, muss sie lediglich den Zähler erhöhen und das NL/HS-Signal wieder auf 0 zurücksetzen, und das ist alles, bis das Signal wieder auf High geht.

Aber das ist erst der Anfang. Mit diesem Handshake-Protokoll können wir ... aber nein! Es tut mir leid, aber diese Kolumne ist schon viel länger, als ich beabsichtigt hatte, also müssen wir warten ...

Nächstes Mal

In meiner nächsten Kolumne werden wir unsere Diskussionen über die verschiedenen Nutzungsszenarien im Zusammenhang mit dem LS1xx-Handshake-Protokoll abschließen, wir werden die Verwendung von Schaltern mit Reset-Eingängen und Schaltern mit Interrupts betrachten, wir werden darüber nachdenken, wie man mit Schalter-Entprellung in FPGAs umgeht, und – Schließlich werden wir uns mit Softwarelösungen für das Switch-Debounce-Problem befassen.

Ich verspreche, dass meine nächste Switch-Bounce-Kolumne die letzte in dieser Miniserie sein wird (nein, natürlich drücke ich nicht hinter meinem Rücken die Daumen, wenn ich das sage; wie könnte man so etwas nur vorschlagen?). Bis zum nächsten Mal freue ich mich wie immer über Ihre Kommentare, Fragen und Vorschläge.

Charakterisierung des SystemsDedizierte Entprellungschips: Auf HalbleiterDedizierte Entprellungschips: Maxim IntegratedSpezielle Entprellungschips: Texas InstrumentsDedizierte Entprellungschips: LogiSwitchNächstes Mal