fertiger TP mit allen FG

Dependencies:   Serial_HL mbed

Fork of TiefpassundFG by julian Roll

Revision:
0:7d4329a1ccd9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 04 08:19:15 2017 +0000
@@ -0,0 +1,112 @@
+#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());
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+