|
@@ -40,7 +40,7 @@ This configuration has a few advantages:
|
|
|
- there is no keyboard scan....which helps keep scan-noise out of the power supply; helpful in an audio environment
|
|
|
- can easily be set to wake-on-interrupt, which means that you can power down between keystrokes
|
|
|
|
|
|
-See [KeyBounce](#keyboard-bounce) below.
|
|
|
+See [KeyBounce](#keyboard-debounce) below.
|
|
|
|
|
|
Of course, this solution does not apply to a keyboard which has *rows* and *columns*.
|
|
|
|
|
@@ -91,7 +91,7 @@ idle CPU pin can be programmed as a logic
|
|
|
input, and have interrupts enabled.
|
|
|
Once a logic "high" is sensed, the CPU pin can be changed to an A/D pin,
|
|
|
and the voltage
|
|
|
-measured (after a short pause). The 1nF capacitor helps with keyboard bounce;
|
|
|
+measured (after a short pause). The 1nF capacitor helps with keyboard debounce;
|
|
|
the time constant is ~10us.
|
|
|
|
|
|
Of course, if the user presses multiple keys simultaneously, the measurement will correspond to the highest voltage on that chart.
|
|
@@ -135,7 +135,7 @@ This scheme can be configured for interrupt triggering
|
|
|
columns are set to input+pullup+interrupt.
|
|
|
Any keypress will then pull at least one column line low. Once the
|
|
|
interrupt is triggered, change to the logic described above, scan the keyboard
|
|
|
-[over the [debounce period](#keyboard-bounce) and then restore they keyboard
|
|
|
+[over the [debounce period](#keyboard-debounce) and then restore they keyboard
|
|
|
to the "ready-for-interrupt" configuration.
|
|
|
|
|
|
### 3x4 plus Ground [new design]
|
|
@@ -264,6 +264,20 @@ can happen.
|
|
|
[Here](keyboard.c) is some example code to illustrate this decode; in C;
|
|
|
look for the symbol **FOUR_PIN**. Here is a working prototype. ![working](keypad.jpg)
|
|
|
|
|
|
+### Interrupts
|
|
|
+
|
|
|
+These small keypads can be scanned continuously; you probably want to revisit the
|
|
|
+keypad every 50ms or so to make sure you don't miss any keypresses.
|
|
|
+
|
|
|
+Changing to an interrupt-driven scheme allows you to relax about missing any keys;
|
|
|
+you are guaranteed to get an interrupt on each key press. It also allows you to
|
|
|
+power down the system until a key is pressed.
|
|
|
+
|
|
|
+Most of the designs above allow for an interrupt-driven configuration. Simply
|
|
|
+set the column pins as "input-pullup-interrupt".
|
|
|
+
|
|
|
+Bear in mind: if the user presses a 2nd key while the 1st key is still depressed,
|
|
|
+an interrupt will *not* be generated.
|
|
|
|
|
|
### Keyboard Debounce
|
|
|
|
|
@@ -298,10 +312,6 @@ One involves using an SPI output and a shift register
|
|
|
<https://hackaday.com/2015/04/15/simple-keypad-scanning-with-spi-and-some-hardware/>
|
|
|
This design requires an external chip ($0.10), 8 diodes and 4 resistors.
|
|
|
|
|
|
-### Interrupts
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
### Reading DIP switches
|
|
|
|