/** * @file counter.h * @author Alexander Klein (alex@kleiax.de) * @brief Contains a class that abstract the hardware counter from the esp32 * @version 0.1 * @date 2023-10-12 * * @copyright Copyright (c) 2023 * */ #pragma once #include #include #include /** * @brief A class that abstract the hardware counter from the esp32 */ class Counter { public: /** * @brief Construct a new Counter object * * @param pin with incoming pulses */ Counter(uint8_t pin); /** * @brief Pause the pulse counting */ void pause(); /** * @brief Resume the pulse counting */ void resume(); /** * @brief Start counting by zero again */ void clear(); /** * @brief Get the counted pulses * * @return int16_t */ int16_t getValue() const; /** * @brief Set the filter value * * The filter skip all pulses after a pulse for the filter time. * The filter time depends on the frequency of the processor. The time * for a whole tact multiplied with the filter value results the filter time. * * @param value max 1023 */ void setFilterValue(uint16_t value); void filterEnable(); void filterDisable(); private: static constexpr int16_t highLimit = INT16_MAX; static constexpr uint8_t lowLimit = 0; static constexpr uint8_t maxCounter = 6; static uint8_t amountOfCounter; bool initalized = false; uint8_t pulsePin; pcnt_unit_t unit; };