summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/button.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/common/button.c b/src/common/button.c
index 78e5b26..8d1a49b 100644
--- a/src/common/button.c
+++ b/src/common/button.c
@@ -21,12 +21,17 @@
* Web: http://ni.fr.eu.org/
* Email: <nico at ni.fr.eu.org>
* }}} */
+#include "common.h"
+#include "modules/utils/utils.h"
#include "io.h"
#include "button.h"
/** Button port. */
#define BUTTON_IO B, 1
+/** Delay for the button to be considered debounced. */
+#define BUTTON_DEBOUNCE_MS 100
+
void
button_init (void)
{
@@ -39,9 +44,16 @@ button_wait (void)
/* Wait until button is pressed. */
while (IO_GET (BUTTON_IO))
;
- /* Wait until button is released. */
- while (!IO_GET (BUTTON_IO))
- ;
+ /* Wait until button is really released. */
+ uint8_t debounce_ms = 0;
+ while (debounce_ms < BUTTON_DEBOUNCE_MS)
+ {
+ utils_delay_ms (1);
+ if (IO_GET (BUTTON_IO))
+ debounce_ms++;
+ else
+ debounce_ms = 0;
+ }
}
uint8_t