enc

Dependents:   ToyBox ohta

Fork of QEI by Aaron Berk

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?

UserRevisionLine numberNew 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