From f31323fd89d89111fbbe7237560213e47bd61716 Mon Sep 17 00:00:00 2001 From: Bruno Freitas Date: Fri, 28 Aug 2020 13:50:45 -0300 Subject: [PATCH 1/2] Sanitize current millis in case of overflow. --- DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino b/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino index f6e34a4..7c2bc08 100644 --- a/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino +++ b/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino @@ -113,6 +113,12 @@ void loop() // Debounce axes for(pin=0; pin<4; pin++) { + // Sanitize millisNow in case of overflow (after around 50 days, but it can happen! :-) + if(millisNow < axesMillis[pin]) + { + axesMillis[pin] = 0; + millisNow = DEBOUNCE_TIME + 1; + } // Check if the current pin state is different to the stored state and that enough time has passed since last change if((axesDirect & axesBits[pin]) != (axes & axesBits[pin]) && (millisNow - axesMillis[pin]) > DEBOUNCE_TIME) { @@ -126,6 +132,12 @@ void loop() // Debounce buttons for(pin=0; pin<12; pin++) { + // Sanitize millisNow in case of overflow (after around 50 days, but it can happen! :-) + if(millisNow < buttonsMillis[pin]) + { + axesMillis[pin] = 0; + millisNow = DEBOUNCE_TIME + 1; + } // Check if the current pin state is different to the stored state and that enough time has passed since last change if((buttonsDirect & buttonsBits[pin]) != (buttons & buttonsBits[pin]) && (millisNow - buttonsMillis[pin]) > DEBOUNCE_TIME) { From 5f8b7fd5e1f616aff01fbaba5a0be212069efbfa Mon Sep 17 00:00:00 2001 From: Bruno Freitas Date: Fri, 28 Aug 2020 13:53:24 -0300 Subject: [PATCH 2/2] Fixing copy and paste error --- DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino b/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino index 7c2bc08..123a4a2 100644 --- a/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino +++ b/DaemonBiteArcadeEncoder/DaemonBiteArcadeEncoder.ino @@ -135,7 +135,7 @@ void loop() // Sanitize millisNow in case of overflow (after around 50 days, but it can happen! :-) if(millisNow < buttonsMillis[pin]) { - axesMillis[pin] = 0; + buttonsMillis[pin] = 0; millisNow = DEBOUNCE_TIME + 1; } // Check if the current pin state is different to the stored state and that enough time has passed since last change