einfacher TP, TP1Ordn.cpp und .h sind wichtig
Fork of ProcVisDemo by
Main.cpp@2:a8f3233502df, 2017-05-03 (annotated)
- Committer:
- mSeiser
- Date:
- Wed May 03 16:04:57 2017 +0000
- Revision:
- 2:a8f3233502df
nur einfacher TP;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mSeiser | 2:a8f3233502df | 1 | #include "mbed.h" |
mSeiser | 2:a8f3233502df | 2 | #include "Serial_HL.h" |
mSeiser | 2:a8f3233502df | 3 | #include "FunkGen.h" |
mSeiser | 2:a8f3233502df | 4 | #include "TP1Ord.h" |
mSeiser | 2:a8f3233502df | 5 | |
mSeiser | 2:a8f3233502df | 6 | // 2 Generatoren mit switch umschalten |
mSeiser | 2:a8f3233502df | 7 | |
mSeiser | 2:a8f3233502df | 8 | SerialBLK pc(USBTX, USBRX); |
mSeiser | 2:a8f3233502df | 9 | SvProtocol ua0(&pc); |
mSeiser | 2:a8f3233502df | 10 | |
mSeiser | 2:a8f3233502df | 11 | void CommandHandler(); |
mSeiser | 2:a8f3233502df | 12 | void ExecSignalChain(); |
mSeiser | 2:a8f3233502df | 13 | |
mSeiser | 2:a8f3233502df | 14 | SignedRampGen fg1; |
mSeiser | 2:a8f3233502df | 15 | RectGen fg2; |
mSeiser | 2:a8f3233502df | 16 | TP1Ord tp1; |
mSeiser | 2:a8f3233502df | 17 | float amp1 = 1.0; |
mSeiser | 2:a8f3233502df | 18 | float v1; // Ausgangswert mit amp1 multipliziert |
mSeiser | 2:a8f3233502df | 19 | |
mSeiser | 2:a8f3233502df | 20 | |
mSeiser | 2:a8f3233502df | 21 | int swt=1; // 1..v1 auf fg1 geschaltet 2..v1 auf fg2 geschaltet |
mSeiser | 2:a8f3233502df | 22 | |
mSeiser | 2:a8f3233502df | 23 | int main(void) |
mSeiser | 2:a8f3233502df | 24 | { |
mSeiser | 2:a8f3233502df | 25 | pc.format(8,SerialBLK::None,1); pc.baud(500000); // 115200 |
mSeiser | 2:a8f3233502df | 26 | |
mSeiser | 2:a8f3233502df | 27 | ua0.SvMessage("FuncGenMain3"); // Meldung zum PC senden |
mSeiser | 2:a8f3233502df | 28 | |
mSeiser | 2:a8f3233502df | 29 | Timer stw; stw.start(); |
mSeiser | 2:a8f3233502df | 30 | while(1) // while(1)-Loop der mit dem PC kommuniziert |
mSeiser | 2:a8f3233502df | 31 | { |
mSeiser | 2:a8f3233502df | 32 | CommandHandler(); |
mSeiser | 2:a8f3233502df | 33 | if( (stw.read_ms()>10) ) // 100Hz |
mSeiser | 2:a8f3233502df | 34 | { // dieser Teil wird mit 100Hz aufgerufen |
mSeiser | 2:a8f3233502df | 35 | stw.reset(); |
mSeiser | 2:a8f3233502df | 36 | ExecSignalChain(); // Funktionsgeneratoren rechnen |
mSeiser | 2:a8f3233502df | 37 | if( ua0.acqON ) { |
mSeiser | 2:a8f3233502df | 38 | ua0.WriteSV(1, tp1.y); |
mSeiser | 2:a8f3233502df | 39 | } |
mSeiser | 2:a8f3233502df | 40 | } |
mSeiser | 2:a8f3233502df | 41 | } |
mSeiser | 2:a8f3233502df | 42 | return 1; |
mSeiser | 2:a8f3233502df | 43 | } |
mSeiser | 2:a8f3233502df | 44 | |
mSeiser | 2:a8f3233502df | 45 | void ExecSignalChain() |
mSeiser | 2:a8f3233502df | 46 | { |
mSeiser | 2:a8f3233502df | 47 | fg1.CalcOneStep(); |
mSeiser | 2:a8f3233502df | 48 | fg2.CalcOneStep(); |
mSeiser | 2:a8f3233502df | 49 | if( swt==1 ) |
mSeiser | 2:a8f3233502df | 50 | v1 = amp1*fg1.val; |
mSeiser | 2:a8f3233502df | 51 | if( swt==2 ) |
mSeiser | 2:a8f3233502df | 52 | v1 = amp1*fg2.val; |
mSeiser | 2:a8f3233502df | 53 | |
mSeiser | 2:a8f3233502df | 54 | tp1.CalcOneStep(v1); |
mSeiser | 2:a8f3233502df | 55 | } |
mSeiser | 2:a8f3233502df | 56 | |
mSeiser | 2:a8f3233502df | 57 | void CommandHandler() |
mSeiser | 2:a8f3233502df | 58 | { |
mSeiser | 2:a8f3233502df | 59 | uint8_t cmd; |
mSeiser | 2:a8f3233502df | 60 | if( !pc.IsDataAvail() ) |
mSeiser | 2:a8f3233502df | 61 | return; |
mSeiser | 2:a8f3233502df | 62 | cmd = ua0.GetCommand(); |
mSeiser | 2:a8f3233502df | 63 | |
mSeiser | 2:a8f3233502df | 64 | // mithilfe von Kommandos vom PC Frequenz und Amplitude verstellen |
mSeiser | 2:a8f3233502df | 65 | |
mSeiser | 2:a8f3233502df | 66 | if( cmd==2 ) // Frequenz |
mSeiser | 2:a8f3233502df | 67 | { |
mSeiser | 2:a8f3233502df | 68 | float frequ = ua0.ReadF(); |
mSeiser | 2:a8f3233502df | 69 | fg1.SetFrequ(frequ); fg2.SetFrequ(frequ); |
mSeiser | 2:a8f3233502df | 70 | ua0.SvMessage("Set Frequ"); |
mSeiser | 2:a8f3233502df | 71 | } |
mSeiser | 2:a8f3233502df | 72 | |
mSeiser | 2:a8f3233502df | 73 | if( cmd==3 ) // Amplitute |
mSeiser | 2:a8f3233502df | 74 | { |
mSeiser | 2:a8f3233502df | 75 | amp1 = ua0.ReadF(); |
mSeiser | 2:a8f3233502df | 76 | ua0.SvMessage("Set Frequ"); |
mSeiser | 2:a8f3233502df | 77 | } |
mSeiser | 2:a8f3233502df | 78 | |
mSeiser | 2:a8f3233502df | 79 | if( cmd==4 ) // Funktionsgeneratoren umschalten |
mSeiser | 2:a8f3233502df | 80 | { |
mSeiser | 2:a8f3233502df | 81 | swt = ua0.ReadI16(); |
mSeiser | 2:a8f3233502df | 82 | ua0.SvMessage("Switch FG"); |
mSeiser | 2:a8f3233502df | 83 | } |
mSeiser | 2:a8f3233502df | 84 | if( cmd==5 ) // Funktionsgeneratoren umschalten |
mSeiser | 2:a8f3233502df | 85 | { |
mSeiser | 2:a8f3233502df | 86 | tp1.SetAlpha(ua0.ReadF()); |
mSeiser | 2:a8f3233502df | 87 | ua0.SvMessage("Set Alpha"); |
mSeiser | 2:a8f3233502df | 88 | } |
mSeiser | 2:a8f3233502df | 89 | } |
mSeiser | 2:a8f3233502df | 90 | |
mSeiser | 2:a8f3233502df | 91 | |
mSeiser | 2:a8f3233502df | 92 | |
mSeiser | 2:a8f3233502df | 93 | |
mSeiser | 2:a8f3233502df | 94 | |
mSeiser | 2:a8f3233502df | 95 | |
mSeiser | 2:a8f3233502df | 96 | |
mSeiser | 2:a8f3233502df | 97 | |
mSeiser | 2:a8f3233502df | 98 | |
mSeiser | 2:a8f3233502df | 99 | |
mSeiser | 2:a8f3233502df | 100 | |
mSeiser | 2:a8f3233502df | 101 | |
mSeiser | 2:a8f3233502df | 102 | |
mSeiser | 2:a8f3233502df | 103 | |
mSeiser | 2:a8f3233502df | 104 | |
mSeiser | 2:a8f3233502df | 105 |