Func-Gen - basic setup
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Sun Jul 24 2022 03:06:37 by
1.7.2