May have first sex lag periods
DE102008053944A1 - Method and device for debouncing keyboard entries - Google Patents
Method and device for debouncing keyboard entries Download PDF
Application number DE200810053944 Other languages English (en) Inventor Allen Erik Park Sjogren Eric Kaysville Nerdrum Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.) Fluke Corp. Original assignee Fluke Corp. Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.) Filing date Publication date Priority to US11 / 940,160priorityCritical Priority to US11 / 940,160prioritypatent / US7809867B2 / en Application filed by Fluke CorpfiledCriticalFluke Corp Publication of DE102008053944A1publicationCriticalpatent / DE102008053944A1 / de Withdrawnlegal-statusCriticalCurrent
- Publication number
- DE102008053944A1 DE102008053944A1DE200810053944DE102008053944ADE102008053944A1DE 102008053944 A1DE102008053944 A1DE 102008053944A1DE 200810053944 DE200810053944 DE 200810053944DE 102008053944 ADE1020080539003980 A1DE1020080539003980 A1DE102008053944A ADE1020080539003980 A1DE103980180
- Prior art keywords
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- 238000001514detection methodMethods0.000claimsabstractdescription7
- 238000010168 coupling processMethods0.000claims10
- 238000005859 coupling reactionMethods0.000claims10
- 230000018109developmental processEffects0.000description2
- 239000002699 waste materialSubstances0.000description1
- H03 — BASIC ELECTRONIC CIRCUITRY
- H03M-CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M11 / 00 — Coding in connection with keyboards or like devices, i.e. coding of the position of operated keys
- H03M11 / 20 — Dynamic coding, i.e. by key scanning
- H01 — BASIC ELECTRIC ELEMENTS
- H01H-ELECTRIC SWITCHES; RELAYS; SELECTORS; EMERGENCY PROTECTIVE DEVICES
- H01H2201 / 00 — Contacts
- H01H2201 / 002 — Contacts bounceless
- The present invention is generally concerned with systems and methods, particularly for calibrating thermal switches.
- Push-button keyboards are widely used to provide input to processors. However, the mechanical switches used on keyboards are not opened and closed immediately. The electrical connection created when a key is pressed is often interrupted several times before a stable connection takes place. Often a key has to be associated with several contacts in order to communicate a row and a column of the key. Hence, the delay in making stable contact can result in an initial signal that has only one component, i.e. H. the row or column that indicates the key pressed.
- Existing systems solve this problem by implementing a software delay loop with a duration that is longer than the keyboard settling time. In such systems, upon detecting an initial signal from the keyboard, the processor begins executing a delay loop until a predetermined delay has elapsed and a stable signal is readable to determine the identity of the pressed key.
- This approach is for processors that are used in devices such. B. block calibrators or drying chambers, or other instruments are embedded, problematic. The processing time available to perform a debounce operation may be limited due to cost constraints or the processing requirements of the device. Given the speed of many microprocessors, the processing time devoted to debouncing could be used to perform a large number of computations.
- In view of the foregoing, an improvement in the art would be to provide a system and method for debouncing signals from a keyboard that does not require processor delays on the order of the keyboard settling time.
- In accordance with one aspect of the present invention, an electronic device includes a keyboard having a number of keys that can be selectively pressed to send input signals to a processor. The buttons include conductive elements that selectively couple row and column signal contacts to a reference voltage. The processor is programmed to read input signals from the keyboard. The processor stores a first value corresponding to input signals received following the initial detection of a key press. After the timer expires, the processor is interrupted and the inputs from the keyboard are reread and combined with the first value to determine a key identifier.
- According to a further aspect of the invention, the processor is further programmed to detect the release of a depressed or actuated key. The processor checks for a key release and if it is not detected it starts a timer and resumes processing. When the timer expires, processing is interrupted and the processor checks again for a key release. These steps can be repeated until a release is detected. According to a further aspect of the invention, pressing a key triggers a hardware interrupt. The hardware interrupt can be deactivated by the processor after the detection of a key actuation and activated after a release has been detected.
- Preferred developments of the invention are specified in the subclaims. Embodiments and developments of the invention are explained in more detail below with reference to the drawings. In the drawings show:
- a block diagram of an electronic device with a keyboard according to a first embodiment of the present invention;
- a schematic representation of a button according to an embodiment of the invention; and
- a process flow diagram to explain a method for debouncing key inputs according to an embodiment of the present invention.
- Preferred exemplary embodiments are described in detail below.
- Referring to FIG. 4, an electronic device may have a keyboard with a plurality of keys. With reference to, and continued reference to, FIG. 5, the buttons may be mounted over a circuit board or other substrate that may incorporate a resilient element such as a resilient member. B. an elastic polymer, a spring or similar element, in an arrangement between the buttons and the circuit board. A row contact, a column contact and a reference contact can be attached to the circuit board. A conductive element located between the keys and the contacts 12, 14, can be brought into contact therewith when a user presses the keys. When the buttons are pressed, the contacts are electrically coupled to the reference contact through the conductive element. In the exemplary embodiment shown, the reference contact is connected to ground, so that an output line coupled to the contacts experiences a voltage drop when the keys are pressed. As mentioned above, the contacts may not be electrically coupled to the reference contact at the same time, but rather open and close the contact several times before a stable electrical connection is established.
- The keyboard outputs can be electrically coupled to a hardware interrupt device and data input terminals of a processor. In one embodiment, the outputs are connected to the interrupt device by means of a NAND gate in such a way that a voltage drop at any of the outputs leads to a change in the signal supplied to the interrupt device. A drop at any of the outputs therefore triggers a hardware interrupt within the processor. The processor then interrupts its current processing and begins executing an interrupt handler.
- In some embodiments, a memory is coupled to the processor. The memory may comprise an interrupt vector with a plurality of pointers that refer to interrupt handlers stored in the memory. In some embodiments, the interrupt vector is provided internally in the processor. The pointers may include a pointer to a key press interrupt routine that is activated when the hardware interrupt is triggered.
- In one embodiment, the key press routine instructs the processor to intercept the signal applied to the data input ports. The key actuation routine also deactivates the hardware interrupt that is triggered by key actuations, so that subsequent key actuations do not result in the key actuation routine being triggered. The key press routine can also trigger a timer and a timer interrupt, as well as activate a timer routine. The timer routine may include a state indicating which of a plurality of subroutines is executing until the timer routine is activated.
- Once activated by the key actuation routine, the timer routine may be in a first state that corresponds to the subroutine. The subroutine can instruct the processor to read the value on the data input terminals connected to the keyboard and to store the result as a first terminal value. The subroutine can change the value of the state in such a way that the subroutine is executed when the timer routine is subsequently activated. The routine can also start the timer, which can either be connected to or embedded in the processor. The timer can be coupled to a clock so that the clock signals cause the timer to count up to a certain value or to count down to zero. The timer preferably measures a delay period sufficient for the keyboard output to settle. The timer preferably does not require any computation or instruction to be performed by the processor in order to measure the delay period. Thus, after the subroutine has set the timer, the processor can resume processing instructions that are not related to debouncing keyboard entries. When the timer expires, the timer triggers a software interrupt. The processor can then refer to the interrupt vector as a function of the software interrupt. In the illustrated embodiment, the interrupt vector contains a pointer which relates the software interrupt to the timer routine so that the processor executes the timer routine upon receipt of the interrupt from the timer.
- As mentioned above, the state of the timer routine is set such that the subroutine is selected after being activated by the key operation routine. When the timer expires, the interrupt causes the processor to execute the subroutine. The subroutine instructs the processor to read the values of the outputs a second time in order to obtain a second connection value. The subroutine can then combine the second connection value with the first connection value. In one embodiment, the connection values are combined by an AND operation. In an alternative embodiment, only the second connection value is used, while the first connection value is ignored. The combined connection values or the second connection value can then be saved as a key identifier.
- In some embodiments, the release of the buttons by the user is detected. The hardware interrupt corresponding to a key actuation can remain deactivated until a release is detected. In such embodiments, the subroutine may change the state to refer to the third subroutine and restart the timer. The processor then resumes processing.
- When the timer expires, the software interrupt is triggered again and the processor refers to the interrupt vector which directs the processor to the timer routine. In the timer, the state is set so that the third subroutine is referred to. The processor thus executes the third subroutine which instructs the processor to check the data input ports to thereby determine whether the keys have been released. If not, the subroutine restarts the timer and the processor resumes processing instructions unrelated to the key press debounce. When the timer expires, the timer interrupt again activates the subroutine.
- When a release of the keys is detected, the subroutine instructs the processor to deactivate the timer, activate the hardware interrupt corresponding to a key actuation, and set a flag indicating that a key input has been received. In some embodiments, the subroutine validates the key identifier to determine whether it corresponds to a valid key. If it does not correspond to a valid key, the subroutine does not set the flag to indicate that a valid entry has been made.
- The subroutine can also change the state to refer to the first subroutine. The subroutine can set the value of the timer to any initial value so that the next time the timer is started, it can simply start counting down. The processor may respond to the valid key flag by activating an input handler that may be part of an application, operating system, or other program executed by the processor.
- Referring to FIG. 12, a method of debouncing keyboard input may include performing processing in a block. Processing may include the execution of instructions by the processor that are not related to the debouncing of a key press, such as a key press. B. an application, an operating system or another program. A key operation is detected in a block, and processing is interrupted in a block. The interrupt processing may include causing the processor to perform a context switching operation in which its current context is saved and the processor begins processing related to the key operation. The hardware interrupt corresponding to the key presses is deactivated in a block so that subsequent key presses do not interrupt processing. In one block, the data input terminals are read and the read data is stored. A timer is started in a block. In a block, the processing of commands which are not related to the debouncing of the key actuation is resumed.
- When the timer expires, processing is again interrupted in a block. The processor reads the data input ports a second time in a block. In a block, the data read in the block are combined with the data read in the block to determine a key identifier. Alternatively, only the value read in the block is used. In such embodiments, the block can be omitted or the data read can be ignored. The timer is restarted in a block and the processing of instructions which are not related to the debouncing of the key actuation is resumed in a block.
- The processing is interrupted in a block when the timer expires, and in a block the method includes an evaluation as to whether the pressed or actuated key has been released. If this is not the case, the steps in blocks to are repeated.If the release of the actuated keys is detected in the block, then the timer is deactivated in a block and the hardware interrupt corresponding to the actuation of the keys is activated in a block. The key identifier can be evaluated in a block to determine whether it corresponds to a valid key entry. If this is the case, then a flag for a valid key is set in a block, and the input can be processed in a block, for example by the application, an operating system or another program. In a block the processing of commands is resumed which are not related to the debouncing of a key actuation.
DE2008100539442007-11-142008-10-30 Method and device for debouncing keyboard entries WithdrawnDE102008053944A1 (de)
- A method of performing keyboard input, the method comprising the steps of: performing keyboard input; Storing initial data that is decoupled from the keyboard in response to the keyboard input; A processor suspending arithmetic processing in response to the keyboard input; Starting a period of time in response to the keyboard input; allowing the processor to perform the arithmetic processing during the period; at the end of the period of time, delayed data is decoupled from the keyboard; Processing the initial data and the delayed data to determine a key identifier in accordance with the keyboard input; and using the processor to process the key identifier.
- The method of claim 1, further comprising interrupting the arithmetic processing in response to the end of the period and resuming the arithmetic processing after the delayed data has been extracted from the keyboard.
- The method of claim 1, wherein performing keyboard input includes depressing and releasing a key, and wherein the method further includes detecting the release of a key.
- The method of claim 3, wherein detecting the release of the key comprises the steps of: starting a second period of time; Interrupting the arithmetic processing by the processor when the second period of time has elapsed; and reading an output of the keyboard.
- The method of claim 5, further comprising detecting a selective decoupling of the first and second signal contacts from the reference voltage.
- Method according to claim 6, wherein the detection of a selective decoupling of the first and the second signal contact takes place after the first timer period has elapsed.
- The method of claim 6, wherein detecting a selective decoupling of the first and second signal contacts from the reference voltage comprises the steps of: re-initiating the timer; Interrupting the computation processing of the processor when a second timer period expires; when the first or the second signal contact is coupled to the reference voltage, again initiating the timer again; and if the first and second signal contacts are not coupled to the reference voltage, deactivating the timer.
- The method of claim 8 further repeating the step of detecting selective decoupling of the first and second signal contacts from the reference voltage until the timer is deactivated.
- The method of claim 5, wherein the processor has a hardware interrupt and wherein the selective coupling of the first signal contact to the reference voltage triggers the hardware interrupt, the method further deactivating the hardware interrupt upon detection of a selective coupling of the first signal contact to the Has reference voltage.
- The method of claim 10, further comprising activating the hardware interrupt upon detection of a selective decoupling of the first and second signal contacts from the reference voltage.
- Method according to Claim 11, further comprising an evaluation of the validity of the key identifier and, if the key identifier is invalid, comprises reactivating the hardware interrupt.
- The method according to claim 11, further comprising evaluating the validity of the key identifier and, if the key identifier is invalid, reactivating the hardware interrupt after the detection of a selective decoupling of the first and second signal contacts from the reference voltage.
- The method of claim 5, wherein combining the first and second values to determine a key identifier comprises ORing the first and second values.
- The method of claim 14, wherein the first and second values correspond to an identifier of a signal line coupling the first and second signal contacts, respectively, to the processor.
- The method of claim 5, wherein the selective coupling of a reference voltage to a first signal contact by a user and the selective coupling of a second signal contact of the first key contact group to the reference voltage by a user do not occur simultaneously.
- An electronic device comprising: a plurality of keys (14) each selectively pressable to produce a plurality of outputs; and a processor (14) comprising: a plurality of data input lines (14) coupled to the plurality of keys (14), a hardware interrupt (14) coupled to and configured to the plurality of keys (14), interrupt arithmetic processing of the processor () on receipt of one of the plurality of outputs, the processor () being programmed to read and store a first value from the data input lines () when the hardware interrupt () is triggered, and a timer () , wherein the processor () is programmed to start the timer () when the hardware interrupt () is triggered and to subsequently resume the arithmetic processing, wherein the timer interrupts the processor after a first delay period has elapsed, the processor () also for reading in and Store a second value from the data input lines after the timer (12) interrupts it and for processing the first and second values are programmed to designate a key identifier ().
- The apparatus of claim 17, wherein the processor (14) is further programmed to restart the timer (14) after the first delay period, and wherein the timer (14) is configured to interrupt the processor (14) after a second delay period has elapsed, the processor ( ) is programmed to read the data input lines () to detect a key release upon interruption of the processor () by the timer () after the second delay period.
- Apparatus according to claim 17, further comprising a clock signal generator coupled to the timer (14), the timer (14) measuring the first delay period in dependence on a clock signal received from the clock signal generator simultaneously with the computation processing by the processor (14).
- An electronic device comprising: a keyboard (14) comprising: a plurality of key contact groups each having two signal contacts (12, 14) and a reference contact (14), the reference contact (14) being electrically coupled to a reference voltage; a plurality of keys (14) each resiliently mounted over one of the key contact groups, the keys including a conductive element (14) selectively connecting the two signal contacts (12, 14) to the reference voltage; and a processor (14) electrically coupled to the signal contacts (12, 14) of the plurality of key contact groups, the processor being programmed to detect a first selective coupling of a first one of the signal contacts to the reference voltage to store a first value that corresponds to the first of the signal contacts, and to initiate a timer () upon detection of the first selective coupling and then to resume processing, to interrupt the processing at the end of a first timer period, a second selective coupling of a second of the signal contacts to the reference voltage upon expiry of the timer (14), store a second value corresponding to the second of the signal contacts, combine the first and second values to determine a key identifier (14), and process the key identifier (14) as a user input value.
- The electronic device of claim 20, wherein the processor (14) is programmed to detect a selective decoupling of the first and second signal contacts (12, 14) from the reference voltage.
- The electronic device of claim 21, wherein the processor (14) is programmed to detect a selective decoupling of the first and second signal contacts (12, 14) after the first timer period has elapsed.
- The electronic device of claim 22, wherein the processor (14) is programmed to detect a selective decoupling of the first and second signal contacts (12, 14) from the reference voltage by re-initiating the timer (14), the arithmetic processing by the processor (14) in progress a second timer period, and when the first or second signal contacts are coupled to the reference voltage, the timer () is initiated again, and when the first and second signal contacts are not coupled to the reference voltage, the timer ( ) is deactivated.
- The electronic device of claim 23, wherein the processor (14) is programmed to repeatedly detect a selective decoupling of the first and second signal contacts (12, 14) from the reference voltage until the timer (14) is deactivated.
- The electronic device of claim 20, wherein the processor (14) has a hardware interrupt (14) and wherein the first and second signal contacts (12, 14) of the plurality of key contact groups are electrically coupled to the hardware interrupt (14) and the processor (14) therefor is programmed to deactivate the hardware interrupt () when a selective coupling of the first signal contact with the reference voltage is detected.
- The electronic device of claim 25, wherein the processor (14) is programmed to activate the hardware interrupt (14) upon detection of a selective decoupling of the first and second signal contacts (12, 14) from the reference voltage.
- The electronic device of claim 26, wherein the processor (14) is programmed to evaluate the validity of the key identifier (14) and, if the key identifier (14) is invalid, to activate the hardware interrupt (14).
Priority Applications (2)
|Application Number||Priority Date||Filing date||Title|
|US11 / 940,160||2007-11-14|
|US11 / 940,160US7809867B2 (en)||2007-11-14||2007-11-14||Keypad de-bouncing apparatus and method|
ID = 39493985
Family Applications (1)
|Application Number||Title||Priority Date||Filing date|
|DE200810053944WithdrawnDE102008053944A1 (de)||2007-11-14||2008-10-30||Method and device for debouncing keyboard entries|
Country Status (5)
Families Citing this family (3)
|Publication number||Priority date||Publication date||Assignee||Title|
|US20100064061A1 (en) *||2008-09-05||2010-03-11||Apple Inc.||Providing substantially immediate action in response to input event|
|US8356131B2 (en) *||2009-10-25||2013-01-15||Sony Mobile Communications Ab||System and method for controlling interruption of a process in electronic equipment based on priority of the process, and program|
|CN104184479A (zh) *||2014-07-31||2014-12-03||山东 神 戎 电子 股份有限公司||一种 可 避免 事件 遗漏 的 按键 去 抖 检测 方法|
Family Cites Families (8)
|Publication number||Priority date||Publication date||Assignee||Title|
|US5068787A (en) *||1990-03-13||1991-11-26||Analyzer Development Group, Inc.||Means and methods of tabulating time and task performances|
|JPH0675680A (yes)||1992-07-21||1994-03-18||Advanced Micro Devices Inc||キ ー パ ッ ド ス キ ャ ナ 機構 お よ び キ ー パ ッ ド を 走 査 す る た め の 方法|
|US5760714A (en)||1996-11-20||1998-06-02||Motorola, Inc.||Interrupt-driven keypad scanning method and apparatus|
|DE19812420A1 (de)||1998-03-20||1999-09-23||Moeller GmbH||Adjustable debouncing|
|US6718425B1 (en) *||2000-05-31||2004-04-06||Cummins Engine Company, Inc.||Handheld computer based system for collection, display and analysis of engine / vehicle data|
|US7218250B2 (en)||2004-09-09||2007-05-15||General Electric Company||Method and apparatus for keyboard control with programmable debounce and jog|
|US7230548B2 (en) *||2004-09-28||2007-06-12||Broadcom Corporation||Method and apparatus for high performance key detection with key debounce|
|US7446676B2 (en)||2005-12-28||2008-11-04||Broadcom Corporation||Self-scan programmable keypad interface|
Also Published As
|DE102014215662B4 (de)||Electronic device and coordinate acquisition method|
|DE60130830T2 (de)||Device and method for generating interrupt signals|
|US4405982A (en)||Arrangement for monitoring the function of a programmable electronic switching circuit|
|DE4012109C2 (de)||Device for the function monitoring of an electrical / electronic switching means, its connected consumer, a control and its connecting line|
|DE4135749B4 (de)||Processor module for a programmable control with an intelligent function module interface|
|DE19531653C2 (de)||One-chip microprocessor with built-in self-test function|
|EP1363306B1 (de)||Safety switch, safety circuit with safety switches and method for operating a safety switch|
|DE69923085T2 (de)||Initializing and restarting operating systems|
|US4683568A (en)||Method of monitoring computer elements, particularly microprocessors|
|DE19905076C2 (de)||Voice control module|
|DE69530141T2 (de)||Integrated processor that supplies indicators to an external power control bus via internal activities|
|EP1917592B1 (de)||Computer system with at least two execution units and a comparison unit as well as a method for its control|
|DE2713400C3 (de)||Numerical control system for machining centers|
|EP0127139B1 (de)||Circuit arrangement for monitoring an operating voltage|
|DE112008003304B4 (de)||Touch sensor device and touch sensor program|
|DE10244231A1 (de)||Remote controlled circuit breaker panel|
|JPS55146552A (en)||N: 1 back-up method of dispersion type hierarchy system|
|DE4228755C2 (de)||Microprocessor system interrupt device and associated method|
|DE60002908T2 (de)||Device and method for improved fault location and diagnosis in computers|
|DE3621212A1 (de)||Power supply device|
|DE10331546A1 (de)||System and method for fast booting and application switching for a computer system|
|OP8||Request for examination as to paragraph 44 patent law|
|8181||Inventor (new situation)|
Inventor name: SJOGREN, ALLEN ERIK, PARK CITY, UTAH, US
Inventor name: NERDRUM, ERIC, KAYSVILLE, UTAH, US
|R016||Response to examination communication|
|R082||Change of representative|
Representative = s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE
|R119||Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee|
- How is the CMV virus treated
- Will melt Italian meringue buttercream
- Can I download my provisional certificate?
- Can Asana be learned online
- How many people shop online around the world
- How can I get my BA degree?
- In Les Miserable, who is LeBlanc
- What are teenagers worried about?
- How can I silence military dog tags
- What is the flat earth model
- What is the software architecture of WhatsApp
- Why do alcohol-related power outages occur
- What is MinMaxScaler in Python
- How to plant basil seeds
- What are some examples of technology transfer
- Why is sport not more popular?
- Who invented the cell phone charger?
- Can i have two gmail accounts?
- What are good branding options
- Who bought Adolf Hitler's top hat?
- What is an indirect question
- What is the 6-yard box for?
- Who was Nelson Mandela's most unlikely friend
- What rhymes with depression