X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=common%2Ftimer.h;h=fe23f87aecd6c684bdf9f23e2a6a86669efb91d7;hb=d5e5dbd0aa28477884940ce045da09a9168859d8;hp=d24d3eab626f300d70204cc48229991ea9fc1c04;hpb=c5060ea81942b0e3f8577536ff78402a19abe3d3;p=max%2Ftmk_keyboard.git diff --git a/common/timer.h b/common/timer.h index d24d3eab..fe23f87a 100644 --- a/common/timer.h +++ b/common/timer.h @@ -20,40 +20,32 @@ along with this program. If not, see . #include -#ifndef TIMER_PRESCALER -# if F_CPU > 16000000 -# define TIMER_PRESCALER 256 -# elif F_CPU > 2000000 -# define TIMER_PRESCALER 64 -# elif F_CPU > 250000 -# define TIMER_PRESCALER 8 -# else -# define TIMER_PRESCALER 1 -# endif +#if defined(__AVR__) +#include "avr/timer_avr.h" #endif -#define TIMER_RAW_FREQ (F_CPU/TIMER_PRESCALER) -#define TIMER_RAW TCNT0 -#define TIMER_RAW_TOP (TIMER_RAW_FREQ/1000) -#if (TIMER_RAW_TOP > 255) -# error "Timer0 can't count 1ms at this clock freq. Use larger prescaler." -#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) +#define TIMER_DIFF_RAW(a, b) TIMER_DIFF_8(a, b) #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