summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2012-09-02 23:47:18 +0900
committertmk <nobody@nowhere>2012-09-02 23:47:18 +0900
commitc77c5043a121f195b3a552feb8283424a0652ce2 (patch)
tree5b20b8c5cb7702408ffc10af0c259d71e6ce4ce9 /common
parentb17f52ebe188b612d0cb063bd2386434a952aaf4 (diff)
downloadqmk_firmware-c77c5043a121f195b3a552feb8283424a0652ce2.tar.gz
qmk_firmware-c77c5043a121f195b3a552feb8283424a0652ce2.zip
usb_hid: Fix timer size uint16_t to uint32_t;
Diffstat (limited to 'common')
-rw-r--r--common/debug.c9
-rw-r--r--common/timer.c34
-rw-r--r--common/timer.h9
3 files changed, 45 insertions, 7 deletions
diff --git a/common/debug.c b/common/debug.c
new file mode 100644
index 0000000000..41d566ee3a
--- /dev/null
+++ b/common/debug.c
@@ -0,0 +1,9 @@
+#include <stdbool.h>
+#include "debug.h"
+
+
+bool debug_enable = false;
+bool debug_matrix = false;
+bool debug_keyboard = false;
+bool debug_mouse = false;
+
diff --git a/common/timer.c b/common/timer.c
index 48a38c9b68..8b8d37e8b3 100644
--- a/common/timer.c
+++ b/common/timer.c
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// counter resolution 1ms
-volatile uint16_t timer_count = 0;
+volatile uint32_t timer_count = 0;
void timer_init(void)
{
@@ -59,7 +59,20 @@ void timer_clear(void)
inline
uint16_t timer_read(void)
{
- uint16_t t;
+ uint32_t t;
+
+ uint8_t sreg = SREG;
+ cli();
+ t = timer_count;
+ SREG = sreg;
+
+ return (t & 0xFFFF);
+}
+
+inline
+uint32_t timer_read32(void)
+{
+ uint32_t t;
uint8_t sreg = SREG;
cli();
@@ -72,14 +85,27 @@ uint16_t timer_read(void)
inline
uint16_t timer_elapsed(uint16_t last)
{
- uint16_t t;
+ uint32_t t;
+
+ uint8_t sreg = SREG;
+ cli();
+ t = timer_count;
+ SREG = sreg;
+
+ return TIMER_DIFF_16((t & 0xFFFF), last);
+}
+
+inline
+uint32_t timer_elapsed32(uint32_t last)
+{
+ uint32_t t;
uint8_t sreg = SREG;
cli();
t = timer_count;
SREG = sreg;
- return TIMER_DIFF_MS(t, last);
+ return TIMER_DIFF_32(t, last);
}
// excecuted once per 1ms.(excess for just timer count?)
diff --git a/common/timer.h b/common/timer.h
index d24d3eab62..70b008e6c9 100644
--- a/common/timer.h
+++ b/common/timer.h
@@ -40,20 +40,23 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define TIMER_DIFF(a, b, max) ((a) >= (b) ? (a) - (b) : (max) - (b) + (a))
-#define TIMER_DIFF_RAW(a, b) TIMER_DIFF(a, b, UINT8_MAX)
-#define TIMER_DIFF_MS(a, b) TIMER_DIFF(a, b, UINT16_MAX)
+#define TIMER_DIFF_8(a, b) TIMER_DIFF(a, b, UINT8_MAX)
+#define TIMER_DIFF_16(a, b) TIMER_DIFF(a, b, UINT16_MAX)
+#define TIMER_DIFF_32(a, b) TIMER_DIFF(a, b, UINT32_MAX)
#ifdef __cplusplus
extern "C" {
#endif
-extern volatile uint16_t timer_count;
+extern volatile uint32_t timer_count;
void timer_init(void);
void timer_clear(void);
uint16_t timer_read(void);
+uint32_t timer_read32(void);
uint16_t timer_elapsed(uint16_t last);
+uint32_t timer_elapsed32(uint32_t last);
#ifdef __cplusplus
}
#endif