Kontaktstopp, den snabba på-av-omkopplaren av en mekanisk switch på grund av dess fysiska rörelse, är ett vanligt problem i tangentbordet och andra switchbaserade ingångsenheter. När flera nycklar trycks in samtidigt (en gemensam situation) kan kontakta studs i varje nyckel leda till att flera falska signaler registreras, vilket resulterar i felaktiga inmatningar. Att övervinna detta kräver både hårdvaru- och mjukvarulösningar.
Hårdvarulösningar:
* debouncing kretsar: Dessa är den vanligaste hårdvarumetoden. De slätar i huvudsak de snabba övergångarna på omkopplaren. Flera typer finns:
* RC-kretsar (motståndstätare): En enkel RC-krets fungerar som ett lågpassfilter. Kondensatorn laddar långsamt och ignorerar effektivt de snabba studsarna efter den första tangentpressen. Tidskonstanten (RC) väljs för att vara tillräckligt lång för att filtrera bort studsen men tillräckligt kort för att inte försena legitima nyckeltryck. Detta är en kostnadseffektiv lösning, men dess effektivitet beror på omkopplarens egenskaper.
* Schmitt trigger: Denna krets är mer sofistikerad och har en hystereseffekt. Det kräver en högre spänning för att slå på än att stänga av och ignorera de små spänningsvariationerna orsakade av studsning. Detta ger en renare signal med en skarpare övergång.
* Mikrokontroller med interna debouncing -kapaciteter: Många moderna mikrokontroller har inbyggda debouncing-funktionaliteter, vilket förenklar hårdvarukonstruktionen. De använder ofta timers eller specialiserad ingångshantering för att upptäcka stabila tillstånd.
* Mekaniska förbättringar: Även om det inte strikt är en kretslösning, använder du med bättre kontaktkonstruktioner högre kvalitet med bättre kontaktkonstruktioner. Dessa switchar är ofta dyrare. Membrantangentbord, som inte har några fysiska rörliga delar, lider i sig inte av kontaktstopp.
Programvarulösningar:
* Programvaruavstötning: Även med hårdvaruavstötning kan vissa kvarvarande studs kvarstå. Programvarualgoritmer kan ytterligare mildra detta. Dessa involverar vanligtvis:
* Timers: Det enklaste tillvägagångssättet är att kontrollera nyckeltillståndet efter en kort försening (t.ex. 10-20 millisekunder). Om staten är konsekvent efter denna fördröjning anses tangenttrycket giltigt.
* State Machines: Mer komplexa tillståndsmaskiner kan hantera mer sofistikerade scenarier, till exempel att skilja mellan en enda tangentpress och flera snabbpressar (avsett som ett upprepat kommando).
* Filtreringsalgoritmer: Mer avancerade mjukvarufiltreringstekniker, såsom rörliga medelvärden eller medianfilter, kan jämna ut insignalen och minska effekterna av återstående studs.
Att övervinna samtidiga tangenttryck:
Att hantera flera nycklar som pressas samtidigt (en nyckelkombination, som Ctrl+C) kräver ytterligare överväganden utöver att helt enkelt avskaffa enskilda nycklar.
* Matrix Keyboards: I stället för enskilda switchar för varje tangent använder många tangentbord en matrislayout. Rader och kolumner skannas för att bestämma vilken knapp som trycks in. Detta möjliggör i sig detektion av samtidiga tangentpressar. Programvara måste sedan tolka kombinationen av aktiva rader och kolumner.
* polling kontra avbrott: Polling innebär regelbundet att kontrollera nyckelstaterna, medan avbrottsdriven ingång hanterar varje tangentpress som ett avbrott. Avbrott kan leda till förbättrad lyhördhet, men kan kräva noggrann hantering för att förhindra tävlingsförhållanden när flera nycklar pressas samtidigt.
* Nyckelköer/buffertar: Programvara använder ofta köer eller buffertar för att lagra tangenttryckningar tillfälligt. Detta hanterar situationer där flera nycklar pressas nästan samtidigt, vilket säkerställer att alla nyckeltryck är registrerade i rätt ordning.
I praktiken kombinerar en robust lösning ofta hårdvaru- och mjukvaruavstötning. En enkel RC -krets kan hantera majoriteten av studset, med programvara som hanterar eventuella återstående brus eller mer sofistikerade tidsaspekter. Valet av hårdvara och mjukvarumetod beror på applikationens begränsningar, budget och prestandakrav. För enkla applikationer kan en endast mjukvarulösning räcka. För krävande applikationer som spel eller industriell kontroll är mer robusta hårdvarulösningar vanligtvis nödvändiga.