Function Generator for TINF 2021

Committer:
stkiegerl
Date:
Thu Mar 18 21:23:40 2021 +0100
Revision:
1:dbd814e65f1d
Parent:
0:464b401734fd
2nd version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stkiegerl 1:dbd814e65f1d 1
stkiegerl 0:464b401734fd 2 #ifndef FuncGenFSST_h
stkiegerl 0:464b401734fd 3 #define FuncGenFSST_h
stkiegerl 0:464b401734fd 4
stkiegerl 0:464b401734fd 5 // Amplituden fix auf +/-1
stkiegerl 0:464b401734fd 6
stkiegerl 0:464b401734fd 7 class SignedRampGen {
stkiegerl 0:464b401734fd 8 public:
stkiegerl 0:464b401734fd 9 float val; // momentaner Ausgangswert
stkiegerl 0:464b401734fd 10 private:
stkiegerl 0:464b401734fd 11 float _inc;
stkiegerl 0:464b401734fd 12 public:
stkiegerl 0:464b401734fd 13 SignedRampGen(); // Konstruktor
stkiegerl 0:464b401734fd 14
stkiegerl 0:464b401734fd 15 void SetPointsPerPeriod(float aPoints);
stkiegerl 0:464b401734fd 16
stkiegerl 0:464b401734fd 17 // bezogen auf Fsample 0..0.5
stkiegerl 0:464b401734fd 18 void SetFrequ(float aFrequ);
stkiegerl 0:464b401734fd 19
stkiegerl 0:464b401734fd 20 // Einen Abtastwert berechnen
stkiegerl 0:464b401734fd 21 // wird bei z.B. Fsample=100Hz 100x pro sec afgerufen
stkiegerl 0:464b401734fd 22 void CalcOneStep();
stkiegerl 0:464b401734fd 23 };
stkiegerl 0:464b401734fd 24
stkiegerl 0:464b401734fd 25
stkiegerl 0:464b401734fd 26 class TriangleGen {
stkiegerl 0:464b401734fd 27 public:
stkiegerl 0:464b401734fd 28 float val; // momentaner Ausgangswert
stkiegerl 0:464b401734fd 29 private:
stkiegerl 0:464b401734fd 30 float _inc;
stkiegerl 0:464b401734fd 31 int _state;
stkiegerl 0:464b401734fd 32 float _phase;
stkiegerl 0:464b401734fd 33 public:
stkiegerl 0:464b401734fd 34 TriangleGen();
stkiegerl 0:464b401734fd 35
stkiegerl 0:464b401734fd 36 void SetPointsPerPeriod(float aPoints);
stkiegerl 0:464b401734fd 37
stkiegerl 0:464b401734fd 38 // bezogen auf Fsample 0..0.5
stkiegerl 0:464b401734fd 39 void SetFrequ(float aFrequ);
stkiegerl 0:464b401734fd 40
stkiegerl 0:464b401734fd 41 // Einen Abtastwert berechnen
stkiegerl 0:464b401734fd 42 void CalcOneStep();
stkiegerl 0:464b401734fd 43 };
stkiegerl 0:464b401734fd 44
stkiegerl 0:464b401734fd 45
stkiegerl 0:464b401734fd 46 class RectGen {
stkiegerl 0:464b401734fd 47 public:
stkiegerl 0:464b401734fd 48 float val; // momentaner Ausgangswert
stkiegerl 0:464b401734fd 49 private:
stkiegerl 0:464b401734fd 50 float _inc;
stkiegerl 0:464b401734fd 51 float _phase;
stkiegerl 0:464b401734fd 52 float _thrs;
stkiegerl 0:464b401734fd 53 public:
stkiegerl 0:464b401734fd 54 RectGen();
stkiegerl 0:464b401734fd 55
stkiegerl 0:464b401734fd 56 void SetPointsPerPeriod(float aPoints);
stkiegerl 0:464b401734fd 57
stkiegerl 0:464b401734fd 58 void SetFrequ(float aFrequ);
stkiegerl 0:464b401734fd 59
stkiegerl 0:464b401734fd 60 // Dauer des ON-Pulses in Prozent ( 0..1 )
stkiegerl 0:464b401734fd 61 void SetPulsWidth(float aPercent)
stkiegerl 0:464b401734fd 62 {
stkiegerl 1:dbd814e65f1d 63 _thrs=aPercent; // möglicherweise andere Formel
stkiegerl 0:464b401734fd 64 }
stkiegerl 0:464b401734fd 65
stkiegerl 0:464b401734fd 66 // Einen Abtastwert berechnen
stkiegerl 0:464b401734fd 67 void CalcOneStep();
stkiegerl 0:464b401734fd 68 };
stkiegerl 0:464b401734fd 69
stkiegerl 0:464b401734fd 70 #endif
stkiegerl 0:464b401734fd 71
stkiegerl 0:464b401734fd 72
stkiegerl 0:464b401734fd 73
stkiegerl 0:464b401734fd 74
stkiegerl 0:464b401734fd 75
stkiegerl 0:464b401734fd 76
stkiegerl 0:464b401734fd 77
stkiegerl 0:464b401734fd 78
stkiegerl 0:464b401734fd 79
stkiegerl 0:464b401734fd 80
stkiegerl 0:464b401734fd 81
stkiegerl 0:464b401734fd 82
stkiegerl 0:464b401734fd 83
stkiegerl 0:464b401734fd 84
stkiegerl 0:464b401734fd 85
stkiegerl 0:464b401734fd 86
stkiegerl 0:464b401734fd 87
stkiegerl 0:464b401734fd 88
stkiegerl 0:464b401734fd 89