diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/debug.c | 9 | ||||
| -rw-r--r-- | common/timer.c | 34 | ||||
| -rw-r--r-- | common/timer.h | 9 |
3 files changed, 45 insertions, 7 deletions
diff --git a/common/debug.c b/common/debug.c new file mode 100644 index 000000000..41d566ee3 --- /dev/null +++ b/common/debug.c | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #include <stdbool.h> | ||
| 2 | #include "debug.h" | ||
| 3 | |||
| 4 | |||
| 5 | bool debug_enable = false; | ||
| 6 | bool debug_matrix = false; | ||
| 7 | bool debug_keyboard = false; | ||
| 8 | bool debug_mouse = false; | ||
| 9 | |||
diff --git a/common/timer.c b/common/timer.c index 48a38c9b6..8b8d37e8b 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/>. | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | // counter resolution 1ms | 24 | // counter resolution 1ms |
| 25 | volatile uint16_t timer_count = 0; | 25 | volatile uint32_t timer_count = 0; |
| 26 | 26 | ||
| 27 | void timer_init(void) | 27 | void timer_init(void) |
| 28 | { | 28 | { |
| @@ -59,7 +59,20 @@ void timer_clear(void) | |||
| 59 | inline | 59 | inline |
| 60 | uint16_t timer_read(void) | 60 | uint16_t timer_read(void) |
| 61 | { | 61 | { |
| 62 | uint16_t t; | 62 | uint32_t t; |
| 63 | |||
| 64 | uint8_t sreg = SREG; | ||
| 65 | cli(); | ||
| 66 | t = timer_count; | ||
| 67 | SREG = sreg; | ||
| 68 | |||
| 69 | return (t & 0xFFFF); | ||
| 70 | } | ||
| 71 | |||
| 72 | inline | ||
| 73 | uint32_t timer_read32(void) | ||
| 74 | { | ||
| 75 | uint32_t t; | ||
| 63 | 76 | ||
| 64 | uint8_t sreg = SREG; | 77 | uint8_t sreg = SREG; |
| 65 | cli(); | 78 | cli(); |
| @@ -72,14 +85,27 @@ uint16_t timer_read(void) | |||
| 72 | inline | 85 | inline |
| 73 | uint16_t timer_elapsed(uint16_t last) | 86 | uint16_t timer_elapsed(uint16_t last) |
| 74 | { | 87 | { |
| 75 | uint16_t t; | 88 | uint32_t t; |
| 89 | |||
| 90 | uint8_t sreg = SREG; | ||
| 91 | cli(); | ||
| 92 | t = timer_count; | ||
| 93 | SREG = sreg; | ||
| 94 | |||
| 95 | return TIMER_DIFF_16((t & 0xFFFF), last); | ||
| 96 | } | ||
| 97 | |||
| 98 | inline | ||
| 99 | uint32_t timer_elapsed32(uint32_t last) | ||
| 100 | { | ||
| 101 | uint32_t t; | ||
| 76 | 102 | ||
| 77 | uint8_t sreg = SREG; | 103 | uint8_t sreg = SREG; |
| 78 | cli(); | 104 | cli(); |
| 79 | t = timer_count; | 105 | t = timer_count; |
| 80 | SREG = sreg; | 106 | SREG = sreg; |
| 81 | 107 | ||
| 82 | return TIMER_DIFF_MS(t, last); | 108 | return TIMER_DIFF_32(t, last); |
| 83 | } | 109 | } |
| 84 | 110 | ||
| 85 | // excecuted once per 1ms.(excess for just timer count?) | 111 | // excecuted once per 1ms.(excess for just timer count?) |
diff --git a/common/timer.h b/common/timer.h index d24d3eab6..70b008e6c 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/>. | |||
| 40 | #endif | 40 | #endif |
| 41 | 41 | ||
| 42 | #define TIMER_DIFF(a, b, max) ((a) >= (b) ? (a) - (b) : (max) - (b) + (a)) | 42 | #define TIMER_DIFF(a, b, max) ((a) >= (b) ? (a) - (b) : (max) - (b) + (a)) |
| 43 | #define TIMER_DIFF_RAW(a, b) TIMER_DIFF(a, b, UINT8_MAX) | 43 | #define TIMER_DIFF_8(a, b) TIMER_DIFF(a, b, UINT8_MAX) |
| 44 | #define TIMER_DIFF_MS(a, b) TIMER_DIFF(a, b, UINT16_MAX) | 44 | #define TIMER_DIFF_16(a, b) TIMER_DIFF(a, b, UINT16_MAX) |
| 45 | #define TIMER_DIFF_32(a, b) TIMER_DIFF(a, b, UINT32_MAX) | ||
| 45 | 46 | ||
| 46 | 47 | ||
| 47 | #ifdef __cplusplus | 48 | #ifdef __cplusplus |
| 48 | extern "C" { | 49 | extern "C" { |
| 49 | #endif | 50 | #endif |
| 50 | extern volatile uint16_t timer_count; | 51 | extern volatile uint32_t timer_count; |
| 51 | 52 | ||
| 52 | 53 | ||
| 53 | void timer_init(void); | 54 | void timer_init(void); |
| 54 | void timer_clear(void); | 55 | void timer_clear(void); |
| 55 | uint16_t timer_read(void); | 56 | uint16_t timer_read(void); |
| 57 | uint32_t timer_read32(void); | ||
| 56 | uint16_t timer_elapsed(uint16_t last); | 58 | uint16_t timer_elapsed(uint16_t last); |
| 59 | uint32_t timer_elapsed32(uint32_t last); | ||
| 57 | #ifdef __cplusplus | 60 | #ifdef __cplusplus |
| 58 | } | 61 | } |
| 59 | #endif | 62 | #endif |
