Alex Pirciu
/
BFMC
a
Embed:
(wiki syntax)
Show/hide line numbers
encoderFilter.cpp
00001 /** 00002 ****************************************************************************** 00003 * @file EncoderFilter.cpp 00004 * @author RBRO/PJ-IU 00005 * @version V1.0.0 00006 * @date day-month-year 00007 * @brief This file contains the class implementation for the encoder filter 00008 * functionality. 00009 ****************************************************************************** 00010 */ 00011 00012 #include <Encoders/encoderFilter.hpp> 00013 00014 /** \brief Constructor for the CEncoderFilter class 00015 * 00016 * Constructor method 00017 * 00018 * \param[in] f_period period value 00019 * \param[in] f_period_sec period value in seconds 00020 * \param[in] f_cpr counts per revolution (rise and fall edges) 00021 * \param[in] f_pinName digital pin connected to encoder output 00022 * \param[in] f_filter reference to filter object 00023 */ 00024 CEncoderFilter::CEncoderFilter(uint32_t f_period 00025 ,float f_period_sec 00026 ,uint32_t f_cpr 00027 ,PinName f_pinName 00028 ,CFilterFunction<float>& f_filter) 00029 :CEncoder(f_period,f_period_sec,f_cpr,f_pinName) 00030 ,m_filter(f_filter) 00031 { 00032 } 00033 00034 /** \brief Get filtered rps value 00035 * 00036 * Method for getting filtererd rotations per second value 00037 * 00038 * \return filtered rps value 00039 */ 00040 float CEncoderFilter::getSpeedRps(){ 00041 return m_filteredRps; 00042 } 00043 00044 /** 00045 * @brief Getter filtered count value 00046 * 00047 * @return int16_t 00048 */ 00049 int16_t CEncoderFilter::getCount(){ 00050 return m_filteredRps*m_period_sec*m_cpr; 00051 } 00052 00053 /** \brief Run method 00054 * 00055 * Method executed at predefined time intervals. 00056 * Method called each f_period 00057 * 00058 */ 00059 void CEncoderFilter::_run() 00060 { 00061 float l_count=m_counter.getCount(); 00062 m_counter.reset(); 00063 m_rps=static_cast<float>(l_count)/m_period_sec/m_cpr; 00064 m_filteredRps=m_filter(m_rps); 00065 } 00066
Generated on Tue Jul 12 2022 22:40:50 by 1.7.2