Rui Watanabe
/
encoder_board
Mbed基板エンコーダ読み取り基板
QEI.h@0:e2d42e66534c, 2018-08-22 (annotated)
- Committer:
- Waaaaat
- Date:
- Wed Aug 22 13:41:41 2018 +0000
- Revision:
- 0:e2d42e66534c
encoder board mbed;
Who changed what in which revision?
User | Revision | Line number | New 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 |