Alexander Welz
/
FunkGenerator
FunkGen_Rechteck_Sägezahn
FuncGenFSST/FuncGenMain3.cpp@2:4d43beb83247, 2019-05-14 (annotated)
- Committer:
- WelzAlex
- Date:
- Tue May 14 12:55:41 2019 +0000
- Revision:
- 2:4d43beb83247
FunkGen_Rechteck_Saegezahn
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WelzAlex | 2:4d43beb83247 | 1 | |
WelzAlex | 2:4d43beb83247 | 2 | #include "mbed.h" |
WelzAlex | 2:4d43beb83247 | 3 | #include "Serial_HL.h" |
WelzAlex | 2:4d43beb83247 | 4 | #include "FuncGenFSST.h" |
WelzAlex | 2:4d43beb83247 | 5 | |
WelzAlex | 2:4d43beb83247 | 6 | SerialBLK pc(USBTX, USBRX); |
WelzAlex | 2:4d43beb83247 | 7 | SvProtocol ua0(&pc); |
WelzAlex | 2:4d43beb83247 | 8 | |
WelzAlex | 2:4d43beb83247 | 9 | SignedRampGen fg1; |
WelzAlex | 2:4d43beb83247 | 10 | RectGen rg1; |
WelzAlex | 2:4d43beb83247 | 11 | |
WelzAlex | 2:4d43beb83247 | 12 | |
WelzAlex | 2:4d43beb83247 | 13 | |
WelzAlex | 2:4d43beb83247 | 14 | float ampl1 = 1.0; |
WelzAlex | 2:4d43beb83247 | 15 | float ampl2 = 0.5; |
WelzAlex | 2:4d43beb83247 | 16 | float v1 = 0; // signal nach dem Verstellen der Amplidute |
WelzAlex | 2:4d43beb83247 | 17 | float v2 = 0; |
WelzAlex | 2:4d43beb83247 | 18 | |
WelzAlex | 2:4d43beb83247 | 19 | |
WelzAlex | 2:4d43beb83247 | 20 | void CommandHandler(); |
WelzAlex | 2:4d43beb83247 | 21 | |
WelzAlex | 2:4d43beb83247 | 22 | void ExecSignalChain(); // Signalverarbeitungskette 1x durchrechen |
WelzAlex | 2:4d43beb83247 | 23 | |
WelzAlex | 2:4d43beb83247 | 24 | int main(void) |
WelzAlex | 2:4d43beb83247 | 25 | { |
WelzAlex | 2:4d43beb83247 | 26 | pc.format(8,SerialBLK::None,1); pc.baud(115200); // 115200 |
WelzAlex | 2:4d43beb83247 | 27 | ua0.SvMessage("FuncGen"); // Meldung zum PC senden |
WelzAlex | 2:4d43beb83247 | 28 | |
WelzAlex | 2:4d43beb83247 | 29 | Timer stw; stw.start(); |
WelzAlex | 2:4d43beb83247 | 30 | while(1) |
WelzAlex | 2:4d43beb83247 | 31 | { |
WelzAlex | 2:4d43beb83247 | 32 | CommandHandler(); |
WelzAlex | 2:4d43beb83247 | 33 | |
WelzAlex | 2:4d43beb83247 | 34 | if( (stw.read_ms()>10) ) // 100Hz |
WelzAlex | 2:4d43beb83247 | 35 | { // dieser Teil wird mit 100Hz aufgerufen |
WelzAlex | 2:4d43beb83247 | 36 | ExecSignalChain(); |
WelzAlex | 2:4d43beb83247 | 37 | stw.reset(); |
WelzAlex | 2:4d43beb83247 | 38 | if( ua0.acqON ) |
WelzAlex | 2:4d43beb83247 | 39 | { |
WelzAlex | 2:4d43beb83247 | 40 | ua0.WriteSV(1, v1); // v1 anzeigen |
WelzAlex | 2:4d43beb83247 | 41 | ua0.WriteSV(2, v2); // v1 anzeigen |
WelzAlex | 2:4d43beb83247 | 42 | } |
WelzAlex | 2:4d43beb83247 | 43 | } |
WelzAlex | 2:4d43beb83247 | 44 | } |
WelzAlex | 2:4d43beb83247 | 45 | return 1; |
WelzAlex | 2:4d43beb83247 | 46 | } |
WelzAlex | 2:4d43beb83247 | 47 | |
WelzAlex | 2:4d43beb83247 | 48 | // wird mit 100Hz (Analyse) oder 44kHz (Echtzeit) aufgerufen |
WelzAlex | 2:4d43beb83247 | 49 | void ExecSignalChain() |
WelzAlex | 2:4d43beb83247 | 50 | { |
WelzAlex | 2:4d43beb83247 | 51 | fg1.CalcOneStep(); |
WelzAlex | 2:4d43beb83247 | 52 | v1 = fg1.val*ampl1; |
WelzAlex | 2:4d43beb83247 | 53 | |
WelzAlex | 2:4d43beb83247 | 54 | rg1.CalcOneStep(); |
WelzAlex | 2:4d43beb83247 | 55 | v2 = rg1.val*ampl2; |
WelzAlex | 2:4d43beb83247 | 56 | //v1 = rg1.val_orginal*ampl2; |
WelzAlex | 2:4d43beb83247 | 57 | } |
WelzAlex | 2:4d43beb83247 | 58 | |
WelzAlex | 2:4d43beb83247 | 59 | void CommandHandler() |
WelzAlex | 2:4d43beb83247 | 60 | { |
WelzAlex | 2:4d43beb83247 | 61 | uint8_t cmd; |
WelzAlex | 2:4d43beb83247 | 62 | if( !pc.IsDataAvail() ) |
WelzAlex | 2:4d43beb83247 | 63 | return; |
WelzAlex | 2:4d43beb83247 | 64 | |
WelzAlex | 2:4d43beb83247 | 65 | cmd = ua0.GetCommand(); |
WelzAlex | 2:4d43beb83247 | 66 | |
WelzAlex | 2:4d43beb83247 | 67 | if( cmd==2 ) // Set Frequ. |
WelzAlex | 2:4d43beb83247 | 68 | { |
WelzAlex | 2:4d43beb83247 | 69 | fg1.SetFrequ(ua0.ReadF()); |
WelzAlex | 2:4d43beb83247 | 70 | ua0.SvMessage("Set Frequ1"); |
WelzAlex | 2:4d43beb83247 | 71 | } |
WelzAlex | 2:4d43beb83247 | 72 | |
WelzAlex | 2:4d43beb83247 | 73 | if( cmd==3 ) // Set ampl |
WelzAlex | 2:4d43beb83247 | 74 | { |
WelzAlex | 2:4d43beb83247 | 75 | ampl1 = ua0.ReadF(); |
WelzAlex | 2:4d43beb83247 | 76 | ua0.SvMessage("Set Ampl1"); |
WelzAlex | 2:4d43beb83247 | 77 | } |
WelzAlex | 2:4d43beb83247 | 78 | |
WelzAlex | 2:4d43beb83247 | 79 | if( cmd==4 ) // Set Frequ2 |
WelzAlex | 2:4d43beb83247 | 80 | { |
WelzAlex | 2:4d43beb83247 | 81 | rg1.SetFrequ(ua0.ReadF()); |
WelzAlex | 2:4d43beb83247 | 82 | ua0.SvMessage("Set Frequ2"); |
WelzAlex | 2:4d43beb83247 | 83 | } |
WelzAlex | 2:4d43beb83247 | 84 | |
WelzAlex | 2:4d43beb83247 | 85 | if( cmd==5 ) // Set ampl2 |
WelzAlex | 2:4d43beb83247 | 86 | { |
WelzAlex | 2:4d43beb83247 | 87 | ampl2 = ua0.ReadF(); |
WelzAlex | 2:4d43beb83247 | 88 | ua0.SvMessage("Set Ampl2"); |
WelzAlex | 2:4d43beb83247 | 89 | } |
WelzAlex | 2:4d43beb83247 | 90 | } |
WelzAlex | 2:4d43beb83247 | 91 | |
WelzAlex | 2:4d43beb83247 | 92 | |
WelzAlex | 2:4d43beb83247 | 93 | |
WelzAlex | 2:4d43beb83247 | 94 | |
WelzAlex | 2:4d43beb83247 | 95 | |
WelzAlex | 2:4d43beb83247 | 96 | |
WelzAlex | 2:4d43beb83247 | 97 | |
WelzAlex | 2:4d43beb83247 | 98 | |
WelzAlex | 2:4d43beb83247 | 99 | |
WelzAlex | 2:4d43beb83247 | 100 | |
WelzAlex | 2:4d43beb83247 | 101 | |
WelzAlex | 2:4d43beb83247 | 102 | |
WelzAlex | 2:4d43beb83247 | 103 | |
WelzAlex | 2:4d43beb83247 | 104 | |
WelzAlex | 2:4d43beb83247 | 105 | |
WelzAlex | 2:4d43beb83247 | 106 | |
WelzAlex | 2:4d43beb83247 | 107 |