From e6cef3c547e8f73cbf2d3c7ba639cb7d9934c475 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 18 Jul 2022 11:25:27 +0200 Subject: Add Hercules RM46L8 Launchpad support (Cortex R4F) --- include/arch/rm46l8lp/driver/counter.h | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 include/arch/rm46l8lp/driver/counter.h (limited to 'include/arch/rm46l8lp/driver/counter.h') diff --git a/include/arch/rm46l8lp/driver/counter.h b/include/arch/rm46l8lp/driver/counter.h new file mode 100644 index 0000000..ee4b595 --- /dev/null +++ b/include/arch/rm46l8lp/driver/counter.h @@ -0,0 +1,40 @@ +/* + * Copyright 2020 Daniel Friesel + * + * SPDX-License-Identifier: BSD-2-Clause + */ +#ifndef COUNTER_H +#define COUNTER_H + +#include "rti.h" +#include + +typedef uint32_t counter_value_t; +typedef uint32_t counter_overflow_t; + +class Counter { + private: + Counter(const Counter ©); + + public: + uint32_t value; + uint32_t overflow; + + Counter() : overflow(0) {} + + inline void start() { + rtiREG1->CNT[0].UCx = 0; + rtiREG1->CNT[0].FRCx = 0; + rtiREG1->GCTRL |= ((uint32)1 << (rtiCOUNTER_BLOCK0 & 3)); + } + + inline void stop() { + rtiREG1->GCTRL &= ~(uint32)((uint32)1 << (rtiCOUNTER_BLOCK0 & 3)); + overflow = rtiREG1->CNT[0].FRCx; + value = rtiREG1->CNT[0].UCx; + } +}; + +extern Counter counter; + +#endif -- cgit v1.2.3