Dependents:   robocon19_ros

Committer:
surpace0924
Date:
Thu Jun 20 23:50:19 2019 +0000
Revision:
1:4b2681ff734d
Parent:
0:a24686ca50ab
fix;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kikoaac 0:a24686ca50ab 1
kikoaac 0:a24686ca50ab 2
kikoaac 0:a24686ca50ab 3 #ifndef QEI_H
kikoaac 0:a24686ca50ab 4 #define QEI_H
kikoaac 0:a24686ca50ab 5
kikoaac 0:a24686ca50ab 6
kikoaac 0:a24686ca50ab 7 #include "mbed.h"
kikoaac 0:a24686ca50ab 8
kikoaac 0:a24686ca50ab 9
kikoaac 0:a24686ca50ab 10 #define PREV_MASK 0x1 //Mask for the previous state in determining direction
kikoaac 0:a24686ca50ab 11 //of rotation.
kikoaac 0:a24686ca50ab 12 #define CURR_MASK 0x2 //Mask for the current state in determining direction
kikoaac 0:a24686ca50ab 13 //of rotation.
kikoaac 0:a24686ca50ab 14 #define INVALID 0x3 //XORing two states where both bits have changed.
kikoaac 0:a24686ca50ab 15
kikoaac 0:a24686ca50ab 16 class QEI {
kikoaac 0:a24686ca50ab 17
kikoaac 0:a24686ca50ab 18 public:
kikoaac 0:a24686ca50ab 19
kikoaac 0:a24686ca50ab 20 typedef enum Encoding {
kikoaac 0:a24686ca50ab 21
kikoaac 0:a24686ca50ab 22 X2_ENCODING,
kikoaac 0:a24686ca50ab 23 X4_ENCODING
kikoaac 0:a24686ca50ab 24
kikoaac 0:a24686ca50ab 25 } Encoding;
kikoaac 0:a24686ca50ab 26
kikoaac 0:a24686ca50ab 27
kikoaac 0:a24686ca50ab 28 QEI(PinName channelA, PinName channelB, PinName index, int pulsesPerRev, Encoding encoding = X2_ENCODING);
kikoaac 0:a24686ca50ab 29
kikoaac 0:a24686ca50ab 30 void reset(void);
kikoaac 0:a24686ca50ab 31
kikoaac 0:a24686ca50ab 32 int getCurrentState(void);
kikoaac 0:a24686ca50ab 33
kikoaac 0:a24686ca50ab 34
kikoaac 0:a24686ca50ab 35 void set(int pul , int rev);
kikoaac 0:a24686ca50ab 36
kikoaac 0:a24686ca50ab 37 int getPulses(void);
kikoaac 0:a24686ca50ab 38
kikoaac 0:a24686ca50ab 39 int getRevolutions(void);
kikoaac 0:a24686ca50ab 40
kikoaac 0:a24686ca50ab 41 int getAng_rev();
kikoaac 0:a24686ca50ab 42
kikoaac 0:a24686ca50ab 43 double getAngle();
kikoaac 0:a24686ca50ab 44 double getSumangle();
kikoaac 0:a24686ca50ab 45 double getRPM();
kikoaac 0:a24686ca50ab 46 double getRPS();
kikoaac 0:a24686ca50ab 47 double getRPMS();
kikoaac 0:a24686ca50ab 48 double getRPUS();
kikoaac 0:a24686ca50ab 49 int pulsesPerRev_;
kikoaac 0:a24686ca50ab 50 private:
kikoaac 0:a24686ca50ab 51 Timer Mper , Rper ,MSper ,USper;
kikoaac 0:a24686ca50ab 52 Ticker Tick;
kikoaac 0:a24686ca50ab 53 double RPM , RPS ,RPMS , RPUS;
surpace0924 1:4b2681ff734d 54 double prev_angle;
kikoaac 0:a24686ca50ab 55
kikoaac 0:a24686ca50ab 56 void encode(void);
kikoaac 0:a24686ca50ab 57
kikoaac 0:a24686ca50ab 58
kikoaac 0:a24686ca50ab 59 void index(void);
kikoaac 0:a24686ca50ab 60
kikoaac 0:a24686ca50ab 61 Encoding encoding_;
kikoaac 0:a24686ca50ab 62
kikoaac 0:a24686ca50ab 63 InterruptIn channelA_;
kikoaac 0:a24686ca50ab 64 InterruptIn channelB_;
kikoaac 0:a24686ca50ab 65 InterruptIn index_;
kikoaac 0:a24686ca50ab 66 int round_rev;
kikoaac 0:a24686ca50ab 67
kikoaac 0:a24686ca50ab 68 int prevState_;
kikoaac 0:a24686ca50ab 69 int currState_;
kikoaac 0:a24686ca50ab 70 double angle_ , sumangle;
kikoaac 0:a24686ca50ab 71 int angle_pulses;
kikoaac 0:a24686ca50ab 72 volatile int pulses_;
kikoaac 0:a24686ca50ab 73 volatile int revolutions_;
kikoaac 0:a24686ca50ab 74
kikoaac 0:a24686ca50ab 75 };
kikoaac 0:a24686ca50ab 76
kikoaac 0:a24686ca50ab 77 #endif