From e2d191ebe69745fe658df8c56be2f8d3c4e7af47 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 21 Jul 2022 12:44:43 +0200 Subject: tc1796: it's working! --- include/arch/infineon-tc1796-mock/driver/counter.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'include/arch') diff --git a/include/arch/infineon-tc1796-mock/driver/counter.h b/include/arch/infineon-tc1796-mock/driver/counter.h index b7330db..38d039e 100644 --- a/include/arch/infineon-tc1796-mock/driver/counter.h +++ b/include/arch/infineon-tc1796-mock/driver/counter.h @@ -6,23 +6,33 @@ #ifndef COUNTER_H #define COUNTER_H +#define STM_TIM0 (*(volatile unsigned int*)0xf0000210) +#define STM_CAP (*(volatile unsigned int*)0xf000022c) + typedef unsigned int counter_value_t; typedef unsigned int counter_overflow_t; class Counter { private: Counter(const Counter ©); + unsigned long long startvalue, stopvalue; public: counter_value_t value; - volatile counter_overflow_t overflow; + counter_overflow_t overflow; Counter() : overflow(0) {} inline void start() { + startvalue = STM_TIM0; + startvalue += (unsigned long long)STM_CAP << 32; } inline void stop() { + stopvalue = STM_TIM0; + stopvalue += (unsigned long long)STM_CAP << 32; + value = (stopvalue - startvalue) & 0xffffffff; + overflow = (unsigned long long)(stopvalue - startvalue) >> 32; } }; -- cgit v1.2.3