Slurp

Dependencies:   FastPWM3 mbed

Committer:
austinbrown124
Date:
Sat May 20 21:42:20 2017 +0000
Revision:
0:9edd6ec0f56a
First Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
austinbrown124 0:9edd6ec0f56a 1 #ifndef POSITIONSENSOR_H
austinbrown124 0:9edd6ec0f56a 2 #define POSITIONSENSOR_H
austinbrown124 0:9edd6ec0f56a 3 class PositionSensor {
austinbrown124 0:9edd6ec0f56a 4 public:
austinbrown124 0:9edd6ec0f56a 5 virtual void Sample(void) = 0;
austinbrown124 0:9edd6ec0f56a 6 virtual float GetMechPosition() {return 0.0f;}
austinbrown124 0:9edd6ec0f56a 7 virtual float GetElecPosition() {return 0.0f;}
austinbrown124 0:9edd6ec0f56a 8 virtual float GetMechVelocity() {return 0.0f;}
austinbrown124 0:9edd6ec0f56a 9 virtual float GetElecVelocity() {return 0.0f;}
austinbrown124 0:9edd6ec0f56a 10 virtual void ZeroPosition(void) = 0;
austinbrown124 0:9edd6ec0f56a 11 virtual int GetRawPosition(void) = 0;
austinbrown124 0:9edd6ec0f56a 12 virtual void SetElecOffset(float offset) = 0;
austinbrown124 0:9edd6ec0f56a 13 virtual int GetCPR(void) = 0;
austinbrown124 0:9edd6ec0f56a 14 virtual void WriteLUT(int new_lut[128]) = 0;
austinbrown124 0:9edd6ec0f56a 15 };
austinbrown124 0:9edd6ec0f56a 16
austinbrown124 0:9edd6ec0f56a 17
austinbrown124 0:9edd6ec0f56a 18 class PositionSensorEncoder: public PositionSensor {
austinbrown124 0:9edd6ec0f56a 19 public:
austinbrown124 0:9edd6ec0f56a 20 PositionSensorEncoder(int CPR, float offset, int ppairs);
austinbrown124 0:9edd6ec0f56a 21 virtual void Sample();
austinbrown124 0:9edd6ec0f56a 22 virtual float GetMechPosition();
austinbrown124 0:9edd6ec0f56a 23 virtual float GetElecPosition();
austinbrown124 0:9edd6ec0f56a 24 virtual float GetMechVelocity();
austinbrown124 0:9edd6ec0f56a 25 virtual float GetElecVelocity();
austinbrown124 0:9edd6ec0f56a 26 virtual void ZeroPosition(void);
austinbrown124 0:9edd6ec0f56a 27 virtual void SetElecOffset(float offset);
austinbrown124 0:9edd6ec0f56a 28 virtual int GetRawPosition(void);
austinbrown124 0:9edd6ec0f56a 29 virtual int GetCPR(void);
austinbrown124 0:9edd6ec0f56a 30 virtual void WriteLUT(int new_lut[128]);
austinbrown124 0:9edd6ec0f56a 31 private:
austinbrown124 0:9edd6ec0f56a 32 InterruptIn *ZPulse;
austinbrown124 0:9edd6ec0f56a 33 DigitalIn *ZSense;
austinbrown124 0:9edd6ec0f56a 34 //DigitalOut *ZTest;
austinbrown124 0:9edd6ec0f56a 35 virtual void ZeroEncoderCount(void);
austinbrown124 0:9edd6ec0f56a 36 virtual void ZeroEncoderCountDown(void);
austinbrown124 0:9edd6ec0f56a 37 int _CPR, flag, rotations, _ppairs, raw;
austinbrown124 0:9edd6ec0f56a 38 //int state;
austinbrown124 0:9edd6ec0f56a 39 float _offset, MechPosition, MechOffset, dir, test_pos, oldVel, out_old, velVec[16];
austinbrown124 0:9edd6ec0f56a 40 int offset_lut[128];
austinbrown124 0:9edd6ec0f56a 41 };
austinbrown124 0:9edd6ec0f56a 42 /*
austinbrown124 0:9edd6ec0f56a 43 class PositionSensorAM5147: public PositionSensor{
austinbrown124 0:9edd6ec0f56a 44 public:
austinbrown124 0:9edd6ec0f56a 45 PositionSensorAM5147(int CPR, float offset, int ppairs);
austinbrown124 0:9edd6ec0f56a 46 virtual void Sample();
austinbrown124 0:9edd6ec0f56a 47 virtual float GetMechPosition();
austinbrown124 0:9edd6ec0f56a 48 virtual float GetElecPosition();
austinbrown124 0:9edd6ec0f56a 49 virtual float GetMechVelocity();
austinbrown124 0:9edd6ec0f56a 50 virtual int GetRawPosition();
austinbrown124 0:9edd6ec0f56a 51 virtual void ZeroPosition();
austinbrown124 0:9edd6ec0f56a 52 virtual void SetElecOffset(float offset);
austinbrown124 0:9edd6ec0f56a 53 virtual int GetCPR(void);
austinbrown124 0:9edd6ec0f56a 54 virtual void WriteLUT(int new_lut[128]);
austinbrown124 0:9edd6ec0f56a 55 private:
austinbrown124 0:9edd6ec0f56a 56 float position, ElecPosition, ElecOffset, MechPosition, MechOffset, modPosition, oldModPosition, oldVel, velVec[16], MechVelocity, ElecVelocity;
austinbrown124 0:9edd6ec0f56a 57 int raw, _CPR, rotations, old_counts, _ppairs;
austinbrown124 0:9edd6ec0f56a 58 SPI *spi;
austinbrown124 0:9edd6ec0f56a 59 DigitalOut *cs;
austinbrown124 0:9edd6ec0f56a 60 int readAngleCmd;
austinbrown124 0:9edd6ec0f56a 61 int offset_lut[128];
austinbrown124 0:9edd6ec0f56a 62
austinbrown124 0:9edd6ec0f56a 63 };*/
austinbrown124 0:9edd6ec0f56a 64
austinbrown124 0:9edd6ec0f56a 65 #endif