Mirror actuator for RT2 lab

Dependencies:   FastPWM

Committer:
altb2
Date:
Wed Apr 28 13:10:16 2021 +0000
Revision:
12:8ea956a5c1d8
Template for students

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb2 12:8ea956a5c1d8 1 #ifndef GPA_H_
altb2 12:8ea956a5c1d8 2 #define GPA_H_
altb2 12:8ea956a5c1d8 3 #include "uart_comm_thread.h"
altb2 12:8ea956a5c1d8 4
altb2 12:8ea956a5c1d8 5
altb2 12:8ea956a5c1d8 6
altb2 12:8ea956a5c1d8 7 class GPA
altb2 12:8ea956a5c1d8 8 {
altb2 12:8ea956a5c1d8 9 public:
altb2 12:8ea956a5c1d8 10
altb2 12:8ea956a5c1d8 11 typedef struct GPADATA {
altb2 12:8ea956a5c1d8 12 float fexc;
altb2 12:8ea956a5c1d8 13 float absGyu;
altb2 12:8ea956a5c1d8 14 float angGyu;
altb2 12:8ea956a5c1d8 15 float absGyr;
altb2 12:8ea956a5c1d8 16 float angGyr;
altb2 12:8ea956a5c1d8 17 float Umag;
altb2 12:8ea956a5c1d8 18 float Ymag;
altb2 12:8ea956a5c1d8 19 float Rmag;
altb2 12:8ea956a5c1d8 20 bool MeasPointFinished;
altb2 12:8ea956a5c1d8 21 bool MeasFinished;
altb2 12:8ea956a5c1d8 22 int ind;
altb2 12:8ea956a5c1d8 23 } gpadata_t;
altb2 12:8ea956a5c1d8 24
altb2 12:8ea956a5c1d8 25 GPA() {};
altb2 12:8ea956a5c1d8 26 GPA(float fMin, float fMax, int NfexcDes, float Aexc0, float Aexc1, float Ts);
altb2 12:8ea956a5c1d8 27 GPA(float fMin, float fMax, int NfexcDes, int NperMin, int NmeasMin, float Ts, float Aexc0, float Aexc1, int Nstart, int Nsweep);
altb2 12:8ea956a5c1d8 28 GPA(float f0, float f1, float *fexcDes, int NfexcDes, int NperMin, int NmeasMin, float Ts, float Aexc0, float Aexc1, int Nstart, int Nsweep);
altb2 12:8ea956a5c1d8 29 GPA(float *fexcDes, int NfexcDes, int NperMin, int NmeasMin, float Ts, float Aexc0, float Aexc1, int Nstart, int Nsweep);
altb2 12:8ea956a5c1d8 30 GPA(float fMin, float fMax, int NfexcDes, int NperMin, int NmeasMin, float Ts, float Aexc0, float Aexc1, int Nstart, int Nsweep, bool doPrint);
altb2 12:8ea956a5c1d8 31
altb2 12:8ea956a5c1d8 32 float operator()(float inp, float out)
altb2 12:8ea956a5c1d8 33 {
altb2 12:8ea956a5c1d8 34 return update(inp, out);
altb2 12:8ea956a5c1d8 35 }
altb2 12:8ea956a5c1d8 36
altb2 12:8ea956a5c1d8 37 virtual ~GPA();
altb2 12:8ea956a5c1d8 38
altb2 12:8ea956a5c1d8 39 void setParameters(float fMin, float fMax, int NfexcDes, int NperMin, int NmeasMin, float Ts, float Aexc0, float Aexc1, int Nstart, int Nsweep, bool doPrint);
altb2 12:8ea956a5c1d8 40 void reset();
altb2 12:8ea956a5c1d8 41 float update(float inp, float out);
altb2 12:8ea956a5c1d8 42
altb2 12:8ea956a5c1d8 43 void printGPAfexcDes();
altb2 12:8ea956a5c1d8 44 void printGPAmeasPara();
altb2 12:8ea956a5c1d8 45 void printGPAmeasTime();
altb2 12:8ea956a5c1d8 46 void printNfexcDes();
altb2 12:8ea956a5c1d8 47 void printLine();
altb2 12:8ea956a5c1d8 48 void printLongLine();
altb2 12:8ea956a5c1d8 49
altb2 12:8ea956a5c1d8 50 void getGPAdata(float *);
altb2 12:8ea956a5c1d8 51 bool new_data_available;
altb2 12:8ea956a5c1d8 52 bool meas_is_finished;
altb2 12:8ea956a5c1d8 53 bool start_now;
altb2 12:8ea956a5c1d8 54
altb2 12:8ea956a5c1d8 55 private:
altb2 12:8ea956a5c1d8 56
altb2 12:8ea956a5c1d8 57 int NfexcDes;
altb2 12:8ea956a5c1d8 58 int NperMin;
altb2 12:8ea956a5c1d8 59 int NmeasMin;
altb2 12:8ea956a5c1d8 60 float Ts;
altb2 12:8ea956a5c1d8 61 float *fexcDes;
altb2 12:8ea956a5c1d8 62 float aAexcDes;
altb2 12:8ea956a5c1d8 63 float bAexcDes;
altb2 12:8ea956a5c1d8 64
altb2 12:8ea956a5c1d8 65 float fnyq;
altb2 12:8ea956a5c1d8 66 double pi2;
altb2 12:8ea956a5c1d8 67 float pi4;
altb2 12:8ea956a5c1d8 68 double pi2Ts;
altb2 12:8ea956a5c1d8 69 float piDiv2;
altb2 12:8ea956a5c1d8 70 float rad2deg;
altb2 12:8ea956a5c1d8 71 float div12pi;
altb2 12:8ea956a5c1d8 72 float div812pi;
altb2 12:8ea956a5c1d8 73
altb2 12:8ea956a5c1d8 74 int Nmeas;
altb2 12:8ea956a5c1d8 75 int Nper;
altb2 12:8ea956a5c1d8 76 double dfexc;
altb2 12:8ea956a5c1d8 77 double fexc;
altb2 12:8ea956a5c1d8 78 float fexcPast;
altb2 12:8ea956a5c1d8 79 float dfexcj;
altb2 12:8ea956a5c1d8 80 int i;
altb2 12:8ea956a5c1d8 81 int j;
altb2 12:8ea956a5c1d8 82 double scaleG;
altb2 12:8ea956a5c1d8 83 double cr;
altb2 12:8ea956a5c1d8 84 double ci;
altb2 12:8ea956a5c1d8 85 double *sU;
altb2 12:8ea956a5c1d8 86 double *sY;
altb2 12:8ea956a5c1d8 87 double sinarg;
altb2 12:8ea956a5c1d8 88 float sinargR;
altb2 12:8ea956a5c1d8 89 int NmeasTotal;
altb2 12:8ea956a5c1d8 90 float Aexc;
altb2 12:8ea956a5c1d8 91 float AexcPast;
altb2 12:8ea956a5c1d8 92 double pi2Tsfexc;
altb2 12:8ea956a5c1d8 93 int Nstart;
altb2 12:8ea956a5c1d8 94 int Nsweep;
altb2 12:8ea956a5c1d8 95 int Nsweep_i;
altb2 12:8ea956a5c1d8 96 float AexcOut;
altb2 12:8ea956a5c1d8 97
altb2 12:8ea956a5c1d8 98 gpadata_t gpaData;
altb2 12:8ea956a5c1d8 99 bool doPrint;
altb2 12:8ea956a5c1d8 100
altb2 12:8ea956a5c1d8 101 void assignParameters(int NfexcDes, int NperMin, int NmeasMin, float Ts, int Nstart, int Nsweep);
altb2 12:8ea956a5c1d8 102 void calculateDecreasingAmplitudeCoefficients(float Aexc0, float Aexc1);
altb2 12:8ea956a5c1d8 103 void initializeConstants(float Ts);
altb2 12:8ea956a5c1d8 104 void assignFilterStorage();
altb2 12:8ea956a5c1d8 105 void fexcDesLogspace(float fMin, float fMax, int NfexcDes);
altb2 12:8ea956a5c1d8 106 void calcGPAmeasPara(float fexcDes_i);
altb2 12:8ea956a5c1d8 107 float wrapAngle(float angle);
altb2 12:8ea956a5c1d8 108
altb2 12:8ea956a5c1d8 109 };
altb2 12:8ea956a5c1d8 110
altb2 12:8ea956a5c1d8 111 #endif