Func-Gen - basic setup

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FuncGenMain_21.cpp Source File

FuncGenMain_21.cpp

00001 #include "mbed.h"
00002 #include "Serial_HL.h"
00003 #include "FuncGenFSST.h"
00004 #include "Tp1Ord.h"
00005 
00006 SerialBLK pc(USBTX, USBRX);
00007 SvProtocol ua0(&pc);
00008 
00009 SignedRampGen fg1;
00010 float ampl1 = 1.0;
00011 float v1 = 0; // ausgang nach der Amplitude
00012 Tp1Ord tp1;
00013 
00014 void CommandHandler();
00015 
00016 void ExecSignalChain();
00017 
00018 Ticker tc;
00019 
00020 AnalogOut dac1(PA_5);
00021 
00022 int main(void)
00023 {
00024     pc.format(8,SerialBLK::None,1);
00025     pc.baud(500000); // 115200
00026     ua0.SvMessage("FuncGen"); // Meldung zum PC senden
00027     
00028     // tc.attach_us(&ExecSignalChain, 100); // Mit timer-Interrupt für 10khz audio
00029     
00030     Timer stw; stw.start();
00031     while(1) {
00032         CommandHandler();
00033         if( stw.read_us()>10000 ) { // 100Hz
00034             stw.reset();
00035             ExecSignalChain(); // zur simulation mit 100Hz aufrufen
00036             if( ua0.acqON ) {
00037                 ua0.WriteSV(1, v1);
00038                 ua0.WriteSV(2, tp1.y);
00039             }
00040         }
00041     }
00042     return 1;
00043 }
00044 
00045 void ExecSignalChain()
00046 {
00047     fg1.CalcOneStep();
00048     v1 = ampl1*fg1.val;
00049     tp1.CalcOneStep(v1);
00050     // Achtung skalierung und Übersteuerung bedenken
00051     // dac1.write( 0.5 + 0.5*v1);
00052 }
00053 
00054 void CommandHandler()
00055 {
00056     uint8_t cmd;
00057     if( !pc.IsDataAvail() )
00058         return;
00059     
00060     cmd = ua0.GetCommand();
00061     
00062     if( cmd==2 )
00063     {
00064         fg1.SetFrequ(ua0.ReadF());
00065         ua0.SvMessage("Set Frequ");
00066     }
00067     if( cmd==3 )
00068     {
00069         ampl1=ua0.ReadF();
00070         ua0.SvMessage("Set Ampl.");
00071     }
00072     if( cmd==4 )
00073     {
00074         tp1.SetAlpha(ua0.ReadF());
00075         ua0.SvMessage("Set Alpha");
00076     }
00077 }