A polled Quadrature encoder Class

Dependencies:   mbed

Committer:
jgnoss
Date:
Tue Aug 30 20:03:36 2011 +0000
Revision:
1:72e6e124a7e6
Parent:
0:7c16b1d2f01e
Added Phase Z and Rev Counter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jgnoss 1:72e6e124a7e6 1 #ifndef _POLLED_QEI_H
jgnoss 1:72e6e124a7e6 2 #define _POLLED_QEI_H
jgnoss 1:72e6e124a7e6 3
jgnoss 1:72e6e124a7e6 4 #define CW 0
jgnoss 1:72e6e124a7e6 5 #define CCW 1
jgnoss 1:72e6e124a7e6 6
jgnoss 1:72e6e124a7e6 7
jgnoss 1:72e6e124a7e6 8 class PolledQEI {
jgnoss 1:72e6e124a7e6 9 public:
jgnoss 1:72e6e124a7e6 10
jgnoss 1:72e6e124a7e6 11
jgnoss 1:72e6e124a7e6 12
jgnoss 1:72e6e124a7e6 13 PolledQEI() {
jgnoss 1:72e6e124a7e6 14 error("Constructor needs 2(3) Pin as parameters");
jgnoss 1:72e6e124a7e6 15 };
jgnoss 1:72e6e124a7e6 16
jgnoss 1:72e6e124a7e6 17 /** PolledQEI constructor
jgnoss 1:72e6e124a7e6 18 *
jgnoss 1:72e6e124a7e6 19 * @param PinName PhaseA and PinName PhaseB
jgnoss 1:72e6e124a7e6 20 * are a valid pin that supports DigitalIn
jgnoss 1:72e6e124a7e6 21 */
jgnoss 1:72e6e124a7e6 22 PolledQEI(PinName a, PinName b) {
jgnoss 1:72e6e124a7e6 23 init( a, b, NC );
jgnoss 1:72e6e124a7e6 24 }
jgnoss 1:72e6e124a7e6 25
jgnoss 1:72e6e124a7e6 26 /** PolledQEI constructor
jgnoss 1:72e6e124a7e6 27 *
jgnoss 1:72e6e124a7e6 28 * @param PinName PhaseA and PinName PhaseB and PinName PhaseZ
jgnoss 1:72e6e124a7e6 29 * are a valid pin that supports DigitalIn
jgnoss 1:72e6e124a7e6 30 */
jgnoss 1:72e6e124a7e6 31 PolledQEI(PinName a, PinName b, PinName z) {
jgnoss 1:72e6e124a7e6 32 init( a, b, z );
jgnoss 1:72e6e124a7e6 33 }
jgnoss 1:72e6e124a7e6 34
jgnoss 1:72e6e124a7e6 35 /** PolledQEI destructor
jgnoss 1:72e6e124a7e6 36 */
jgnoss 1:72e6e124a7e6 37 ~PolledQEI() {
jgnoss 1:72e6e124a7e6 38 if ( _ticker ) delete( _ticker );
jgnoss 1:72e6e124a7e6 39 if ( _phaseA ) delete( _phaseA );
jgnoss 1:72e6e124a7e6 40 if ( _phaseB ) delete( _phaseB );
jgnoss 1:72e6e124a7e6 41 if ( _phaseZ ) delete( _phaseZ );
jgnoss 1:72e6e124a7e6 42 }
jgnoss 1:72e6e124a7e6 43
jgnoss 1:72e6e124a7e6 44 /** Set the sampling time in microseconds.
jgnoss 1:72e6e124a7e6 45 *
jgnoss 1:72e6e124a7e6 46 * @param int The time between pin samples in microseconds.
jgnoss 1:72e6e124a7e6 47 */
jgnoss 1:72e6e124a7e6 48 void setSampleFrequency(int i);
jgnoss 1:72e6e124a7e6 49 int pos(void);
jgnoss 1:72e6e124a7e6 50 int dir(void);
jgnoss 1:72e6e124a7e6 51 int rev(void);
jgnoss 1:72e6e124a7e6 52
jgnoss 1:72e6e124a7e6 53
jgnoss 1:72e6e124a7e6 54 private:
jgnoss 1:72e6e124a7e6 55
jgnoss 1:72e6e124a7e6 56
jgnoss 1:72e6e124a7e6 57 protected:
jgnoss 1:72e6e124a7e6 58 DigitalIn *_phaseA;
jgnoss 1:72e6e124a7e6 59 DigitalIn *_phaseB;
jgnoss 1:72e6e124a7e6 60 InterruptIn *_phaseZ;
jgnoss 1:72e6e124a7e6 61 Ticker *_ticker;
jgnoss 1:72e6e124a7e6 62 int _sample_uSec;
jgnoss 1:72e6e124a7e6 63 unsigned int _actEncPos;
jgnoss 1:72e6e124a7e6 64 unsigned int _actEncRev;
jgnoss 1:72e6e124a7e6 65 int _dir;
jgnoss 1:72e6e124a7e6 66 unsigned int last;
jgnoss 1:72e6e124a7e6 67
jgnoss 1:72e6e124a7e6 68 void init(PinName a, PinName b, PinName z);
jgnoss 1:72e6e124a7e6 69 void check (void);
jgnoss 1:72e6e124a7e6 70 void countRev(void);
jgnoss 1:72e6e124a7e6 71
jgnoss 1:72e6e124a7e6 72 };
jgnoss 1:72e6e124a7e6 73
jgnoss 0:7c16b1d2f01e 74 #endif