enc
Fork of QEI by
QEI.h@1:7e60713aefc2, 2013-12-09 (annotated)
- Committer:
- ohtake_i
- Date:
- Mon Dec 09 23:57:01 2013 +0000
- Revision:
- 1:7e60713aefc2
- Parent:
- 0:5c2ad81551aa
for izumi and ayami
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aberk | 0:5c2ad81551aa | 1 | #ifndef QEI_H |
aberk | 0:5c2ad81551aa | 2 | #define QEI_H |
aberk | 0:5c2ad81551aa | 3 | |
aberk | 0:5c2ad81551aa | 4 | #include "mbed.h" |
aberk | 0:5c2ad81551aa | 5 | |
ohtake_i | 1:7e60713aefc2 | 6 | #define PREV_MASK 0x1 //Mask for the previous state in determining direction of rotation. |
ohtake_i | 1:7e60713aefc2 | 7 | #define CURR_MASK 0x2 //Mask for the current state in determining direction of rotation. |
aberk | 0:5c2ad81551aa | 8 | #define INVALID 0x3 //XORing two states where both bits have changed. |
aberk | 0:5c2ad81551aa | 9 | |
aberk | 0:5c2ad81551aa | 10 | class QEI { |
aberk | 0:5c2ad81551aa | 11 | |
aberk | 0:5c2ad81551aa | 12 | public: |
aberk | 0:5c2ad81551aa | 13 | |
aberk | 0:5c2ad81551aa | 14 | typedef enum Encoding { |
aberk | 0:5c2ad81551aa | 15 | |
aberk | 0:5c2ad81551aa | 16 | X2_ENCODING, |
aberk | 0:5c2ad81551aa | 17 | X4_ENCODING |
aberk | 0:5c2ad81551aa | 18 | |
aberk | 0:5c2ad81551aa | 19 | } Encoding; |
aberk | 0:5c2ad81551aa | 20 | |
aberk | 0:5c2ad81551aa | 21 | QEI(PinName channelA, PinName channelB, PinName index, int pulsesPerRev, Encoding encoding = X2_ENCODING); |
aberk | 0:5c2ad81551aa | 22 | |
aberk | 0:5c2ad81551aa | 23 | void reset(void); |
aberk | 0:5c2ad81551aa | 24 | |
aberk | 0:5c2ad81551aa | 25 | int getCurrentState(void); |
aberk | 0:5c2ad81551aa | 26 | |
aberk | 0:5c2ad81551aa | 27 | int getPulses(void); |
aberk | 0:5c2ad81551aa | 28 | |
aberk | 0:5c2ad81551aa | 29 | int getRevolutions(void); |
aberk | 0:5c2ad81551aa | 30 | |
aberk | 0:5c2ad81551aa | 31 | private: |
aberk | 0:5c2ad81551aa | 32 | |
aberk | 0:5c2ad81551aa | 33 | void encode(void); |
aberk | 0:5c2ad81551aa | 34 | |
aberk | 0:5c2ad81551aa | 35 | void index(void); |
aberk | 0:5c2ad81551aa | 36 | |
aberk | 0:5c2ad81551aa | 37 | Encoding encoding_; |
aberk | 0:5c2ad81551aa | 38 | |
aberk | 0:5c2ad81551aa | 39 | InterruptIn channelA_; |
aberk | 0:5c2ad81551aa | 40 | InterruptIn channelB_; |
aberk | 0:5c2ad81551aa | 41 | InterruptIn index_; |
aberk | 0:5c2ad81551aa | 42 | |
aberk | 0:5c2ad81551aa | 43 | int pulsesPerRev_; |
aberk | 0:5c2ad81551aa | 44 | int prevState_; |
aberk | 0:5c2ad81551aa | 45 | int currState_; |
aberk | 0:5c2ad81551aa | 46 | |
aberk | 0:5c2ad81551aa | 47 | volatile int pulses_; |
aberk | 0:5c2ad81551aa | 48 | volatile int revolutions_; |
aberk | 0:5c2ad81551aa | 49 | |
aberk | 0:5c2ad81551aa | 50 | }; |
aberk | 0:5c2ad81551aa | 51 | |
ohtake_i | 1:7e60713aefc2 | 52 | #endif |