a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexpirciu 1:ceee5a608e7c 1 /**
alexpirciu 1:ceee5a608e7c 2 * @file quadratureencodertask.hpp
alexpirciu 1:ceee5a608e7c 3 * @author RBRO/PJ-IU
alexpirciu 1:ceee5a608e7c 4 * @brief
alexpirciu 1:ceee5a608e7c 5 * @version 0.1
alexpirciu 1:ceee5a608e7c 6 * @date 2018-10-23
alexpirciu 1:ceee5a608e7c 7 *
alexpirciu 1:ceee5a608e7c 8 * @copyright Copyright (c) 2018
alexpirciu 1:ceee5a608e7c 9 *
alexpirciu 1:ceee5a608e7c 10 */
alexpirciu 1:ceee5a608e7c 11 #ifndef QUADRATURE_ENCODER_TASK_HPP
alexpirciu 1:ceee5a608e7c 12 #define QUADRATURE_ENCODER_TASK_HPP
alexpirciu 1:ceee5a608e7c 13
alexpirciu 1:ceee5a608e7c 14 #include <Encoders/encoderinterface.hpp>
alexpirciu 1:ceee5a608e7c 15 #include <Encoders/QuadratureEncoder.hpp>
alexpirciu 1:ceee5a608e7c 16 #include <Filter/Filter.hpp>
alexpirciu 1:ceee5a608e7c 17
alexpirciu 1:ceee5a608e7c 18 #include <rtos.h>
alexpirciu 1:ceee5a608e7c 19
alexpirciu 1:ceee5a608e7c 20 namespace encoders{
alexpirciu 1:ceee5a608e7c 21
alexpirciu 1:ceee5a608e7c 22 /**
alexpirciu 1:ceee5a608e7c 23 * @brief Rotary encoder with filter interface class
alexpirciu 1:ceee5a608e7c 24 *
alexpirciu 1:ceee5a608e7c 25 */
alexpirciu 1:ceee5a608e7c 26 class CQuadratureEncoderNonFilteredGetterInterface{
alexpirciu 1:ceee5a608e7c 27 public:
alexpirciu 1:ceee5a608e7c 28 virtual int16_t getNonFilteredCount()=0;
alexpirciu 1:ceee5a608e7c 29 virtual float getNonFilteredSpeedRps() = 0;
alexpirciu 1:ceee5a608e7c 30 };
alexpirciu 1:ceee5a608e7c 31
alexpirciu 1:ceee5a608e7c 32 /**
alexpirciu 1:ceee5a608e7c 33 * @brief It implements a periodic task, which get the value from the counter and reset it to zero.
alexpirciu 1:ceee5a608e7c 34 *
alexpirciu 1:ceee5a608e7c 35 */
alexpirciu 1:ceee5a608e7c 36 class CQuadratureEncoderTask:public IEncoderGetter{
alexpirciu 1:ceee5a608e7c 37 public:
alexpirciu 1:ceee5a608e7c 38 CQuadratureEncoderTask(float,encoders::CQuadratureEncoder_TIMX*,uint16_t);
alexpirciu 1:ceee5a608e7c 39 static void static_callback(void* obj);
alexpirciu 1:ceee5a608e7c 40
alexpirciu 1:ceee5a608e7c 41 void startTimer();
alexpirciu 1:ceee5a608e7c 42 protected:
alexpirciu 1:ceee5a608e7c 43 virtual void _run();
alexpirciu 1:ceee5a608e7c 44 virtual int16_t getCount();
alexpirciu 1:ceee5a608e7c 45 virtual float getSpeedRps();
alexpirciu 1:ceee5a608e7c 46 virtual bool isAbs(){return false;}
alexpirciu 1:ceee5a608e7c 47 protected:
alexpirciu 1:ceee5a608e7c 48 encoders::CQuadratureEncoder_TIMX *m_Quadratureencoder;
alexpirciu 1:ceee5a608e7c 49 int16_t m_encoderCnt;
alexpirciu 1:ceee5a608e7c 50 const float m_taskperiod_s;
alexpirciu 1:ceee5a608e7c 51 const uint16_t m_resolution;
alexpirciu 1:ceee5a608e7c 52 RtosTimer m_timer;
alexpirciu 1:ceee5a608e7c 53 };
alexpirciu 1:ceee5a608e7c 54
alexpirciu 1:ceee5a608e7c 55 /**
alexpirciu 1:ceee5a608e7c 56 * @brief It implements the same functionality than CQuadratureEncoderTask class, but in additional it can filter the values.
alexpirciu 1:ceee5a608e7c 57 *
alexpirciu 1:ceee5a608e7c 58 */
alexpirciu 1:ceee5a608e7c 59 class CQuadratureEncoderWithFilterTask: public CQuadratureEncoderTask, public CQuadratureEncoderNonFilteredGetterInterface{
alexpirciu 1:ceee5a608e7c 60 public:
alexpirciu 1:ceee5a608e7c 61 CQuadratureEncoderWithFilterTask(float,encoders::CQuadratureEncoder_TIMX *, uint16_t,filter::CFilterFunction<float>&);
alexpirciu 1:ceee5a608e7c 62 virtual void _run();
alexpirciu 1:ceee5a608e7c 63 virtual int16_t getCount();
alexpirciu 1:ceee5a608e7c 64 virtual float getSpeedRps();
alexpirciu 1:ceee5a608e7c 65 virtual int16_t getNonFilteredCount();
alexpirciu 1:ceee5a608e7c 66 virtual float getNonFilteredSpeedRps();
alexpirciu 1:ceee5a608e7c 67 protected:
alexpirciu 1:ceee5a608e7c 68 double m_encoderCntFiltered;
alexpirciu 1:ceee5a608e7c 69 filter::CFilterFunction<float>& m_filter;
alexpirciu 1:ceee5a608e7c 70
alexpirciu 1:ceee5a608e7c 71 };
alexpirciu 1:ceee5a608e7c 72
alexpirciu 1:ceee5a608e7c 73 }; // namespace encoders
alexpirciu 1:ceee5a608e7c 74
alexpirciu 1:ceee5a608e7c 75 #endif