Slurp

Dependencies:   FastPWM3 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers PositionSensor.h Source File

PositionSensor.h

00001 #ifndef POSITIONSENSOR_H
00002 #define POSITIONSENSOR_H
00003 class PositionSensor {
00004 public:
00005     virtual void Sample(void) = 0;
00006     virtual float GetMechPosition() {return 0.0f;}
00007     virtual float GetElecPosition() {return 0.0f;}
00008     virtual float GetMechVelocity() {return 0.0f;}
00009     virtual float GetElecVelocity() {return 0.0f;}
00010     virtual void ZeroPosition(void) = 0;
00011     virtual int GetRawPosition(void) = 0;
00012     virtual void SetElecOffset(float offset) = 0;
00013     virtual int GetCPR(void) = 0;
00014     virtual  void WriteLUT(int new_lut[128]) = 0;
00015 };
00016   
00017   
00018 class PositionSensorEncoder: public PositionSensor {
00019 public:
00020     PositionSensorEncoder(int CPR, float offset, int ppairs);
00021     virtual void Sample();
00022     virtual float GetMechPosition();
00023     virtual float GetElecPosition();
00024     virtual float GetMechVelocity();
00025     virtual float GetElecVelocity();
00026     virtual void ZeroPosition(void);
00027     virtual void SetElecOffset(float offset);
00028     virtual int GetRawPosition(void);
00029     virtual int GetCPR(void);
00030     virtual  void WriteLUT(int new_lut[128]); 
00031 private:
00032     InterruptIn *ZPulse;
00033     DigitalIn *ZSense;
00034     //DigitalOut *ZTest;
00035     virtual void ZeroEncoderCount(void);
00036     virtual void ZeroEncoderCountDown(void);
00037     int _CPR, flag, rotations, _ppairs, raw;
00038     //int state;
00039     float _offset, MechPosition, MechOffset, dir, test_pos, oldVel, out_old, velVec[16];
00040     int offset_lut[128];
00041 };
00042 /*
00043 class PositionSensorAM5147: public PositionSensor{
00044 public:
00045     PositionSensorAM5147(int CPR, float offset, int ppairs);
00046     virtual void Sample();
00047     virtual float GetMechPosition();
00048     virtual float GetElecPosition();
00049     virtual float GetMechVelocity();
00050     virtual int GetRawPosition();
00051     virtual void ZeroPosition();
00052     virtual void SetElecOffset(float offset);
00053     virtual int GetCPR(void);
00054     virtual void WriteLUT(int new_lut[128]);
00055 private:
00056     float position, ElecPosition, ElecOffset, MechPosition, MechOffset, modPosition, oldModPosition, oldVel, velVec[16], MechVelocity, ElecVelocity;
00057     int raw, _CPR, rotations, old_counts, _ppairs;
00058     SPI *spi;
00059     DigitalOut *cs;
00060     int readAngleCmd;
00061     int offset_lut[128];
00062 
00063 };*/
00064 
00065 #endif