diff --git a/include/arch/arduino-nano/driver/counter.h b/include/arch/arduino-nano/driver/counter.h index 9105219f9377735dc6920c751221dee1c0b13420..43ddd153e40cb6b5f9b391f2f040c14ba1ae3300 100644 --- a/include/arch/arduino-nano/driver/counter.h +++ b/include/arch/arduino-nano/driver/counter.h @@ -1,6 +1,9 @@ #include #include +typedef counter_value_t uint16_t; +typedef counter_overflowed_t uint8_t; + class Counter { private: Counter(const Counter ©); diff --git a/include/arch/esp8266/driver/counter.h b/include/arch/esp8266/driver/counter.h index 754f4d698109c69fdb288ca095ebc4874f8d17dc..42f6f1401de0de7fc4ce2b32b728cad2933bc246 100644 --- a/include/arch/esp8266/driver/counter.h +++ b/include/arch/esp8266/driver/counter.h @@ -7,26 +7,31 @@ extern "C" { } #include "c_types.h" +typedef counter_value_t uint32_t; +typedef counter_overflowed_t uint32_t; + class Counter { private: Counter(const Counter ©); uint32_t start_cycles; public: - Counter() : start_cycles(0) {} + uint32_t value; uint32_t overflowed; + Counter() : start_cycles(0), value(0), overflowed(0) {} + inline void start() { asm volatile ("esync; rsr %0,ccount":"=a" (start_cycles)); } - inline uint32_t stop() { + inline void stop() { uint32_t stop_cycles; asm volatile ("esync; rsr %0,ccount":"=a" (stop_cycles)); if (stop_cycles > start_cycles) { - return stop_cycles - start_cycles; + value = stop_cycles - start_cycles; } else { - return 0; + overflowed = 1; } } }; diff --git a/include/arch/msp430fr5969lp/driver/counter.h b/include/arch/msp430fr5969lp/driver/counter.h index e7f05073e810f520a93b983c890281d13d7cf30a..501808bf210979a20f019ffde01143fb965add37 100644 --- a/include/arch/msp430fr5969lp/driver/counter.h +++ b/include/arch/msp430fr5969lp/driver/counter.h @@ -1,6 +1,9 @@ #include #include +typedef counter_value_t uint16_t; +typedef counter_overflowed_t uint8_t; + class Counter { private: Counter(const Counter ©); diff --git a/include/arch/msp430fr5994lp/driver/counter.h b/include/arch/msp430fr5994lp/driver/counter.h index e7f05073e810f520a93b983c890281d13d7cf30a..21c5ec523eda3feb63b6e4e3629f4206542a52ab 100644 --- a/include/arch/msp430fr5994lp/driver/counter.h +++ b/include/arch/msp430fr5994lp/driver/counter.h @@ -1,6 +1,9 @@ #include #include +typedef uint16_t counter_value_t; +typedef uint8_t counter_overflowed_t; + class Counter { private: Counter(const Counter ©); diff --git a/include/arch/posix/driver/counter.h b/include/arch/posix/driver/counter.h index 6390d140ed563fe910a7164ff3c6748775a0bb63..4f575a8de03bb219cc46028ccda6da124c8cd521 100644 --- a/include/arch/posix/driver/counter.h +++ b/include/arch/posix/driver/counter.h @@ -1,6 +1,9 @@ #include #include +typedef uint64_t counter_value_t; +typedef uint8_t counter_overflowed_t; + class Counter { private: Counter(const Counter ©);