Func-Gen - basic setup

Dependencies:   mbed

Committer:
stkiegerl
Date:
Tue Mar 23 17:13:12 2021 +0000
Revision:
3:9fd12684fa88
Parent:
2:3abf5ddd9fc0
-

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hollegha3 2:3abf5ddd9fc0 1 #include "mbed.h"
hollegha3 2:3abf5ddd9fc0 2 #include "Serial_HL.h"
hollegha3 2:3abf5ddd9fc0 3 #include "FuncGenFSST.h"
stkiegerl 3:9fd12684fa88 4 #include "Tp1Ord.h"
hollegha3 2:3abf5ddd9fc0 5
hollegha3 2:3abf5ddd9fc0 6 SerialBLK pc(USBTX, USBRX);
hollegha3 2:3abf5ddd9fc0 7 SvProtocol ua0(&pc);
hollegha3 2:3abf5ddd9fc0 8
stkiegerl 3:9fd12684fa88 9 SignedRampGen fg1;
stkiegerl 3:9fd12684fa88 10 float ampl1 = 1.0;
stkiegerl 3:9fd12684fa88 11 float v1 = 0; // ausgang nach der Amplitude
stkiegerl 3:9fd12684fa88 12 Tp1Ord tp1;
stkiegerl 3:9fd12684fa88 13
hollegha3 2:3abf5ddd9fc0 14 void CommandHandler();
hollegha3 2:3abf5ddd9fc0 15
stkiegerl 3:9fd12684fa88 16 void ExecSignalChain();
stkiegerl 3:9fd12684fa88 17
stkiegerl 3:9fd12684fa88 18 Ticker tc;
stkiegerl 3:9fd12684fa88 19
stkiegerl 3:9fd12684fa88 20 AnalogOut dac1(PA_5);
stkiegerl 3:9fd12684fa88 21
hollegha3 2:3abf5ddd9fc0 22 int main(void)
hollegha3 2:3abf5ddd9fc0 23 {
hollegha3 2:3abf5ddd9fc0 24 pc.format(8,SerialBLK::None,1);
hollegha3 2:3abf5ddd9fc0 25 pc.baud(500000); // 115200
hollegha3 2:3abf5ddd9fc0 26 ua0.SvMessage("FuncGen"); // Meldung zum PC senden
hollegha3 2:3abf5ddd9fc0 27
stkiegerl 3:9fd12684fa88 28 // tc.attach_us(&ExecSignalChain, 100); // Mit timer-Interrupt für 10khz audio
stkiegerl 3:9fd12684fa88 29
hollegha3 2:3abf5ddd9fc0 30 Timer stw; stw.start();
hollegha3 2:3abf5ddd9fc0 31 while(1) {
hollegha3 2:3abf5ddd9fc0 32 CommandHandler();
stkiegerl 3:9fd12684fa88 33 if( stw.read_us()>10000 ) { // 100Hz
hollegha3 2:3abf5ddd9fc0 34 stw.reset();
stkiegerl 3:9fd12684fa88 35 ExecSignalChain(); // zur simulation mit 100Hz aufrufen
hollegha3 2:3abf5ddd9fc0 36 if( ua0.acqON ) {
stkiegerl 3:9fd12684fa88 37 ua0.WriteSV(1, v1);
stkiegerl 3:9fd12684fa88 38 ua0.WriteSV(2, tp1.y);
hollegha3 2:3abf5ddd9fc0 39 }
hollegha3 2:3abf5ddd9fc0 40 }
hollegha3 2:3abf5ddd9fc0 41 }
hollegha3 2:3abf5ddd9fc0 42 return 1;
hollegha3 2:3abf5ddd9fc0 43 }
hollegha3 2:3abf5ddd9fc0 44
stkiegerl 3:9fd12684fa88 45 void ExecSignalChain()
stkiegerl 3:9fd12684fa88 46 {
stkiegerl 3:9fd12684fa88 47 fg1.CalcOneStep();
stkiegerl 3:9fd12684fa88 48 v1 = ampl1*fg1.val;
stkiegerl 3:9fd12684fa88 49 tp1.CalcOneStep(v1);
stkiegerl 3:9fd12684fa88 50 // Achtung skalierung und Übersteuerung bedenken
stkiegerl 3:9fd12684fa88 51 // dac1.write( 0.5 + 0.5*v1);
stkiegerl 3:9fd12684fa88 52 }
stkiegerl 3:9fd12684fa88 53
hollegha3 2:3abf5ddd9fc0 54 void CommandHandler()
hollegha3 2:3abf5ddd9fc0 55 {
hollegha3 2:3abf5ddd9fc0 56 uint8_t cmd;
hollegha3 2:3abf5ddd9fc0 57 if( !pc.IsDataAvail() )
hollegha3 2:3abf5ddd9fc0 58 return;
stkiegerl 3:9fd12684fa88 59
stkiegerl 3:9fd12684fa88 60 cmd = ua0.GetCommand();
stkiegerl 3:9fd12684fa88 61
stkiegerl 3:9fd12684fa88 62 if( cmd==2 )
stkiegerl 3:9fd12684fa88 63 {
stkiegerl 3:9fd12684fa88 64 fg1.SetFrequ(ua0.ReadF());
stkiegerl 3:9fd12684fa88 65 ua0.SvMessage("Set Frequ");
stkiegerl 3:9fd12684fa88 66 }
stkiegerl 3:9fd12684fa88 67 if( cmd==3 )
stkiegerl 3:9fd12684fa88 68 {
stkiegerl 3:9fd12684fa88 69 ampl1=ua0.ReadF();
stkiegerl 3:9fd12684fa88 70 ua0.SvMessage("Set Ampl.");
stkiegerl 3:9fd12684fa88 71 }
stkiegerl 3:9fd12684fa88 72 if( cmd==4 )
stkiegerl 3:9fd12684fa88 73 {
stkiegerl 3:9fd12684fa88 74 tp1.SetAlpha(ua0.ReadF());
stkiegerl 3:9fd12684fa88 75 ua0.SvMessage("Set Alpha");
stkiegerl 3:9fd12684fa88 76 }
stkiegerl 3:9fd12684fa88 77 }