![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Slurp
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Tue Jul 12 2022 16:57:53 by
![doxygen](doxygen.png)