Mbed基板エンコーダ読み取り基板

Dependencies:   mbed

Committer:
Waaaaat
Date:
Wed Aug 22 13:41:41 2018 +0000
Revision:
0:e2d42e66534c
encoder board mbed;

Who changed what in which revision?

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