diff options
author | tmk <nobody@nowhere> | 2012-06-11 10:53:02 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2012-06-11 10:53:02 +0900 |
commit | 62d1ebb91c7b381ce3d88aad9ee0b03bea9fce26 (patch) | |
tree | 6b10864a310f611187e1b61102da7da1db1d2e29 /common/timer.h | |
parent | 225de7a847a511d004bf909b1334e19497cf2f9d (diff) | |
parent | 81706d1130fdc3c0d6d110f4d8665c47ffd7fb59 (diff) |
Merge branch 'newdir'
Diffstat (limited to 'common/timer.h')
-rw-r--r-- | common/timer.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/common/timer.h b/common/timer.h new file mode 100644 index 0000000000..f9e8181e6f --- /dev/null +++ b/common/timer.h @@ -0,0 +1,53 @@ +/* +Copyright 2011 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef TIMER_H +#define TIMER_H 1 + +#include <stdint.h> + +#ifndef TIMER_PRESCALER +# if F_CPU > 16000000 +# define TIMER_PRESCALER 256 +# elif F_CPU >= 4000000 +# define TIMER_PRESCALER 64 +# else +# define TIMER_PRESCALER 8 +# endif +#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) + + +extern volatile uint16_t timer_count; + + +void timer_init(void); +void timer_clear(void); +uint16_t timer_read(void); +uint16_t timer_elapsed(uint16_t last); + +#endif |