julian Roll
/
TiefpassundFG_2
fertiger TP mit allen FG
Fork of TiefpassundFG by
main.cpp
- Committer:
- Polteko123
- Date:
- 2017-05-04
- Revision:
- 0:7d4329a1ccd9
File content as of revision 0:7d4329a1ccd9:
#include "mbed.h" #include "Serial_HL.h" #include "FuncGenFSST2.h" #include "TP1Ord_V2.h" // 2 Generatoren mit switch umschalten SerialBLK pc(USBTX, USBRX); SvProtocol ua0(&pc); void CommandHandler(); void ExecSignalChain(); SignedRampGen fg1; RectGen fg2; Tp1Ord tp; float amp1 = 1.0; float v1; // Ausgangswert mit amp1 multipliziert int swt=2; // 1..v1 auf fg1 geschaltet 2..v1 auf fg2 geschaltet int main(void) { pc.format(8,SerialBLK::None,1); pc.baud(500000); // 115200 ua0.SvMessage("FuncGenMain3"); // Meldung zum PC senden Timer stw; stw.start(); while(1) // while(1)-Loop der mit dem PC kommuniziert { CommandHandler(); if( (stw.read_ms()>10) ) // 100Hz { // dieser Teil wird mit 100Hz aufgerufen stw.reset(); ExecSignalChain(); // Funktionsgeneratoren rechnen if( ua0.acqON ) { // ua0.WriteSV(1, v1); // ua0.WriteSV(2, tp.y); ua0.WriteSV(1, fg2.val); } } } return 1; } void ExecSignalChain() { fg1.CalcOneStep(); fg2.CalcOneStep(); if( swt==1 ) v1 = amp1*fg1.val; if( swt==2 ) v1 = amp1*fg2.val; tp.CalcOneStep(v1); } void CommandHandler() { uint8_t cmd; if( !pc.IsDataAvail() ) return; cmd = ua0.GetCommand(); // mithilfe von Kommandos vom PC Frequenz und Amplitude verstellen if( cmd==2 ) // Frequenz { float frequ = ua0.ReadF(); fg1.SetFrequ(frequ); fg2.SetFrequ(frequ); ua0.SvMessage("Set Frequ"); } if( cmd==3 ) // Amplitute { amp1 = ua0.ReadF(); ua0.SvMessage("Set Frequ"); } if( cmd==4 ) // Funktionsgeneratoren umschalten { swt = ua0.ReadI16(); ua0.SvMessage("Switch FG"); } if( cmd==5 ) // Set alpha { tp.SetAlpha(ua0.ReadF()); ua0.SvMessage("SetAlpha"); } if(cmd == 6) { fg2.SetPulsWidth(ua0.ReadF()); } }