Juergen Gnoss
/
PolledQEI
A polled Quadrature encoder Class
Diff: PolledQEI.h
- Revision:
- 0:7c16b1d2f01e
- Child:
- 1:72e6e124a7e6
diff -r 000000000000 -r 7c16b1d2f01e PolledQEI.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PolledQEI.h Tue Aug 30 19:52:34 2011 +0000 @@ -0,0 +1,74 @@ +#ifndef _POLLED_QEI_H +#define _POLLED_QEI_H + +#define CW 0 +#define CCW 1 + + +class PolledQEI { +public: + + + + PolledQEI() { + error("Constructor need 2 parameters"); + }; + + /** PolledQEI constructor + * + * @param PinName PhaseA and PinName PhaseB + * are a valid pin that supports DigitalIn + */ + PolledQEI(PinName a, PinName b) { + init( a, b, NC ); + } + + /** PolledQEI constructor + * + * @param PinName PhaseA and PinName PhaseB and PinName PhaseZ + * are a valid pin that supports DigitalIn + */ + PolledQEI(PinName a, PinName b, PinName z) { + init( a, b, z ); + } + + /** PolledQEI destructor + */ + ~PolledQEI() { + if ( _ticker ) delete( _ticker ); + if ( _phaseA ) delete( _phaseA ); + if ( _phaseB ) delete( _phaseB ); + if ( _phaseZ ) delete( _phaseZ ); + } + + /** Set the sampling time in microseconds. + * + * @param int The time between pin samples in microseconds. + */ + void setSampleFrequency(int i); + int pos(void); + int dir(void); + int rev(void); + + +private: + + +protected: + DigitalIn *_phaseA; + DigitalIn *_phaseB; + InterruptIn *_phaseZ; + Ticker *_ticker; + int _sample_uSec; + unsigned int _actEncPos; + unsigned int _actEncRev; + int _dir; + unsigned int last; + + void init(PinName a, PinName b, PinName z); + void check (void); + void countRev(void); + +}; + +#endif \ No newline at end of file