
From: Petr Smolik <petr@smoliku.cz> Signed-off-by: Petr Smolik <petr@smoliku.cz> Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> --- arch/generic/defines/Makefile.omk | 3 +- arch/generic/defines/lt_timer.h | 65 +++++++++++++++++++++++++++++++++ arch/generic/defines/lt_timer_types.h | 19 ++++++++++ 3 files changed, 86 insertions(+), 1 deletions(-) create mode 100644 arch/generic/defines/lt_timer.h create mode 100644 arch/generic/defines/lt_timer_types.h diff --git a/arch/generic/defines/Makefile.omk b/arch/generic/defines/Makefile.omk index 115fc7a..afe582e 100644 --- a/arch/generic/defines/Makefile.omk +++ b/arch/generic/defines/Makefile.omk @@ -1,7 +1,8 @@ # -*- makefile -*- #include_HEADERS += byteswap.h endian.h -#include_HEADERS += lt_timer.h lt_timer_types.h keyval_id_his.h ads1x46.h +include_HEADERS += lt_timer.h lt_timer_types.h +#include_HEADERS += keyval_id_his.h ads1x46.h include_HEADERS += irq_generic.h #include_HEADERS = $(notdir $(wildcard $(SOURCES_DIR)/*.h)) diff --git a/arch/generic/defines/lt_timer.h b/arch/generic/defines/lt_timer.h new file mode 100644 index 0000000..b5d39df --- /dev/null +++ b/arch/generic/defines/lt_timer.h @@ -0,0 +1,65 @@ +#ifndef _LT_TIMER_H +#define _LT_TIMER_H + +#include <types.h> +#include <lt_timer_types.h> + +#include <cpu_def.h> +#include <system_def.h> + +//timers + +#ifndef LT_TIMER_VAR_LOC +#define LT_TIMER_VAR_LOC +#endif + +static lt_ticks_t LT_TIMER_VAR_LOC last_ticks; +static lt_mstime_t LT_TIMER_VAR_LOC actual_msec; + +/* Declaration of ulan light timers */ + +#define lt_get_msbase() (1000/SYS_TIMER_HZ) /* in ms */ +#define lt_get_ticks() (get_sys_timer_ticks()) + +static inline void +lt_mstime_update() +{ + lt_ticks_t LT_TIMER_VAR_LOC act_ticks; + lt_mstime_t LT_TIMER_VAR_LOC msec_diff; + + act_ticks=lt_get_ticks(); + msec_diff=((lt_tidiff_t)(act_ticks-last_ticks))*lt_get_msbase(); + last_ticks=act_ticks; + + actual_msec+=msec_diff; +} + + +#define LT_TIMER_DEC(cust_prefix) \ +\ +extern lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \ +static inline void \ +cust_prefix##_init() \ +{\ + lt_mstime_update();\ + cust_prefix##_last_expired=actual_msec;\ +}\ +static inline int \ +cust_prefix##_expired(lt_mstime_t expiration) \ +{\ + lt_mstime_update();\ + \ + if ((lt_msdiff_t)(actual_msec-cust_prefix##_last_expired)>=expiration) {\ + cust_prefix##_last_expired=actual_msec;\ + return 1;\ + }\ + \ + return 0;\ +} + +#define LT_TIMER_IMP(cust_prefix) \ +\ +lt_mstime_t LT_TIMER_VAR_LOC cust_prefix##_last_expired; \ + + +#endif /* _LT_TIMER_H */ diff --git a/arch/generic/defines/lt_timer_types.h b/arch/generic/defines/lt_timer_types.h new file mode 100644 index 0000000..e7dc27c --- /dev/null +++ b/arch/generic/defines/lt_timer_types.h @@ -0,0 +1,19 @@ +#ifndef _LT_TIMER_TYPES_H +#define _LT_TIMER_TYPES_H + +//timers + +#ifdef SDCC +typedef unsigned char lt_ticks_t; +typedef char lt_tidiff_t; +typedef unsigned int lt_mstime_t; +typedef int lt_msdiff_t; +#define LT_TIMER_VAR_LOC DATA +#else +typedef unsigned int lt_ticks_t; +typedef int lt_tidiff_t; +typedef unsigned long lt_mstime_t; +typedef signed long lt_msdiff_t; +#endif + +#endif /* _LT_TIMER_TYPES_H */ -- 1.6.4.4 ---