X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Ftimer.h;h=6437473ff772051ab3f5208bbb319e43d493b9f2;hb=b9e265368fde73daff069788dcb58c8230d01b32;hp=f9e8181e6f5b22b3b3ec3920f3a3d30b137f1767;hpb=f4125707399d11a7d80587659c464b9bcddb8c56;p=tmk_firmware.git diff --git a/common/timer.h b/common/timer.h index f9e8181..6437473 100644 --- a/common/timer.h +++ b/common/timer.h @@ -23,10 +23,12 @@ along with this program. If not, see . #ifndef TIMER_PRESCALER # if F_CPU > 16000000 # define TIMER_PRESCALER 256 -# elif F_CPU >= 4000000 +# elif F_CPU > 2000000 # define TIMER_PRESCALER 64 -# else +# elif F_CPU > 250000 # define TIMER_PRESCALER 8 +# else +# define TIMER_PRESCALER 1 # endif #endif #define TIMER_RAW_FREQ (F_CPU/TIMER_PRESCALER) @@ -38,16 +40,28 @@ along with this program. If not, see . #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 #endif