robot

Dependencies:   FastPWM3 mbed

Committer:
bwang
Date:
Thu May 04 17:35:10 2017 +0000
Revision:
155:7c6005933d4c
Parent:
121:de10418bf2c2
Child:
219:1cfd651eb2b2
05/04/2017 13:34 - changed logic in PwmIn::handle_fall, which no longer resets timer on invalid edges

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 15:b583cd30b063 1 #ifndef __POSITIONSENSOR_H
bwang 15:b583cd30b063 2 #define __POSITIONSENSOR_H
bwang 0:bac9c3a3a6ca 3
bwang 0:bac9c3a3a6ca 4 class PositionSensor {
bwang 0:bac9c3a3a6ca 5 public:
bwang 0:bac9c3a3a6ca 6 virtual float GetMechPosition() {return 0.0f;}
bwang 0:bac9c3a3a6ca 7 virtual float GetElecPosition() {return 0.0f;}
bwang 119:ad7a6af6fba3 8 virtual float GetUnlimitedElecPosition() {return 0.0f;}
bwang 28:ed9c1ca386fd 9 virtual bool IsValid() {return false;}
bwang 0:bac9c3a3a6ca 10 };
bwang 0:bac9c3a3a6ca 11
bwang 0:bac9c3a3a6ca 12
bwang 0:bac9c3a3a6ca 13 class PositionSensorEncoder: public PositionSensor {
bwang 0:bac9c3a3a6ca 14 public:
bwang 9:074575151e4b 15 PositionSensorEncoder(int cpr, float offset);
bwang 0:bac9c3a3a6ca 16 virtual float GetMechPosition();
bwang 0:bac9c3a3a6ca 17 virtual float GetElecPosition();
bwang 119:ad7a6af6fba3 18 virtual float GetUnlimitedElecPosition();
bwang 28:ed9c1ca386fd 19 virtual bool IsValid();
bwang 0:bac9c3a3a6ca 20 private:
bwang 0:bac9c3a3a6ca 21 InterruptIn *ZPulse;
bwang 0:bac9c3a3a6ca 22 DigitalIn *ZSense;
bwang 0:bac9c3a3a6ca 23 void ZeroEncoderCount(void);
bwang 119:ad7a6af6fba3 24 private:
bwang 9:074575151e4b 25 int _cpr;
bwang 119:ad7a6af6fba3 26 int _lobes;
bwang 119:ad7a6af6fba3 27 float _offset;
bwang 119:ad7a6af6fba3 28
bwang 28:ed9c1ca386fd 29 bool _valid;
bwang 119:ad7a6af6fba3 30 float _rotations;
bwang 0:bac9c3a3a6ca 31 };
bwang 0:bac9c3a3a6ca 32
bwang 0:bac9c3a3a6ca 33 #endif