BULME_AHEL20
/
LPC_HL_FUNC_GENERATOR_DAC
Function generator
FuncGenMain.cpp@3:c8c3b755ef54, 2019-05-14 (annotated)
- Committer:
- Lenschinki
- Date:
- Tue May 14 12:16:55 2019 +0000
- Revision:
- 3:c8c3b755ef54
- Parent:
- 2:100244cef3d6
vomit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hollegha2 | 2:100244cef3d6 | 1 | |
hollegha2 | 0:9ac39e20730c | 2 | #include "mbed.h" |
hollegha2 | 0:9ac39e20730c | 3 | #include "Serial_HL.h" |
hollegha2 | 2:100244cef3d6 | 4 | #include "FuncGen.h" |
hollegha2 | 0:9ac39e20730c | 5 | |
hollegha2 | 0:9ac39e20730c | 6 | SerialBLK pc(USBTX, USBRX); |
hollegha2 | 0:9ac39e20730c | 7 | SvProtocol ua0(&pc); |
Lenschinki | 3:c8c3b755ef54 | 8 | AnalogOut dacout(p18); |
hollegha2 | 0:9ac39e20730c | 9 | |
hollegha2 | 1:e88b745f2ca2 | 10 | // BusOut leds(LED1,LED2,LED3,LED4); Bertl14 |
hollegha2 | 1:e88b745f2ca2 | 11 | // M0-Board |
hollegha2 | 1:e88b745f2ca2 | 12 | BusOut leds(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); |
hollegha2 | 1:e88b745f2ca2 | 13 | |
hollegha2 | 2:100244cef3d6 | 14 | void CommandHandler(); |
hollegha2 | 2:100244cef3d6 | 15 | void ExecSignalChain(); |
Lenschinki | 3:c8c3b755ef54 | 16 | void output(); |
hollegha2 | 0:9ac39e20730c | 17 | |
hollegha2 | 2:100244cef3d6 | 18 | RectGen fg1; |
Lenschinki | 3:c8c3b755ef54 | 19 | SignedRampGen rg1; |
Lenschinki | 3:c8c3b755ef54 | 20 | TriangleGen tg1; |
Lenschinki | 3:c8c3b755ef54 | 21 | SinusGen sg1; |
hollegha2 | 2:100244cef3d6 | 22 | |
Lenschinki | 3:c8c3b755ef54 | 23 | Ticker ticker; |
Lenschinki | 3:c8c3b755ef54 | 24 | |
Lenschinki | 3:c8c3b755ef54 | 25 | float ampl1 = 0.5; |
hollegha2 | 2:100244cef3d6 | 26 | float v1; // Wert nach dem Koeffizientenglied |
Lenschinki | 3:c8c3b755ef54 | 27 | float v2; |
Lenschinki | 3:c8c3b755ef54 | 28 | float v3; |
Lenschinki | 3:c8c3b755ef54 | 29 | float v4; |
Lenschinki | 3:c8c3b755ef54 | 30 | |
Lenschinki | 3:c8c3b755ef54 | 31 | int mode = 1; |
hollegha2 | 0:9ac39e20730c | 32 | |
hollegha2 | 0:9ac39e20730c | 33 | int main(void) |
hollegha2 | 0:9ac39e20730c | 34 | { |
hollegha2 | 0:9ac39e20730c | 35 | pc.format(8,SerialBLK::None,1); |
Lenschinki | 3:c8c3b755ef54 | 36 | pc.baud(115200); // 115200 |
hollegha2 | 0:9ac39e20730c | 37 | leds = 9; |
Lenschinki | 3:c8c3b755ef54 | 38 | ua0.SvMessage("FuncGenMain"); // Meldung zum PC senden |
Lenschinki | 3:c8c3b755ef54 | 39 | ticker.attach_us(&output,45); |
hollegha2 | 0:9ac39e20730c | 40 | while(1) { |
hollegha2 | 0:9ac39e20730c | 41 | CommandHandler(); |
hollegha2 | 0:9ac39e20730c | 42 | } |
hollegha2 | 0:9ac39e20730c | 43 | return 1; |
hollegha2 | 0:9ac39e20730c | 44 | } |
hollegha2 | 0:9ac39e20730c | 45 | |
hollegha2 | 2:100244cef3d6 | 46 | // Einen Abtastschritt der Signalverarbeitungskette durchrechnen |
hollegha2 | 2:100244cef3d6 | 47 | // 100Hz zum Testen und alles Visualisieren |
hollegha2 | 2:100244cef3d6 | 48 | // 40kHz zum Anhören |
hollegha2 | 2:100244cef3d6 | 49 | void ExecSignalChain() |
hollegha2 | 2:100244cef3d6 | 50 | { |
hollegha2 | 2:100244cef3d6 | 51 | fg1.CalcOneStep(); |
Lenschinki | 3:c8c3b755ef54 | 52 | v1 = 0.5 + ampl1 * fg1.val; // Koeffizientenglied rechnen |
Lenschinki | 3:c8c3b755ef54 | 53 | |
Lenschinki | 3:c8c3b755ef54 | 54 | rg1.CalcOneStep(); |
Lenschinki | 3:c8c3b755ef54 | 55 | v2 = 0.5 + ampl1 * rg1.val; |
Lenschinki | 3:c8c3b755ef54 | 56 | |
Lenschinki | 3:c8c3b755ef54 | 57 | tg1.CalcOneStep(); |
Lenschinki | 3:c8c3b755ef54 | 58 | v3 = 0.5 + ampl1 * tg1.val; |
Lenschinki | 3:c8c3b755ef54 | 59 | |
Lenschinki | 3:c8c3b755ef54 | 60 | sg1.CalcOneStep(); |
Lenschinki | 3:c8c3b755ef54 | 61 | v4 = 0.5 + ampl1 * sg1.val; |
Lenschinki | 3:c8c3b755ef54 | 62 | } |
Lenschinki | 3:c8c3b755ef54 | 63 | void output() |
Lenschinki | 3:c8c3b755ef54 | 64 | { |
Lenschinki | 3:c8c3b755ef54 | 65 | ExecSignalChain(); |
Lenschinki | 3:c8c3b755ef54 | 66 | if(mode==1) |
Lenschinki | 3:c8c3b755ef54 | 67 | dacout = v1; |
Lenschinki | 3:c8c3b755ef54 | 68 | else if(mode==2) |
Lenschinki | 3:c8c3b755ef54 | 69 | dacout = v2; |
Lenschinki | 3:c8c3b755ef54 | 70 | else if(mode==3) |
Lenschinki | 3:c8c3b755ef54 | 71 | dacout = v3; |
Lenschinki | 3:c8c3b755ef54 | 72 | else |
Lenschinki | 3:c8c3b755ef54 | 73 | dacout = v4; |
hollegha2 | 2:100244cef3d6 | 74 | } |
hollegha2 | 2:100244cef3d6 | 75 | |
hollegha2 | 0:9ac39e20730c | 76 | void CommandHandler() |
hollegha2 | 0:9ac39e20730c | 77 | { |
hollegha2 | 0:9ac39e20730c | 78 | uint8_t cmd; |
hollegha2 | 0:9ac39e20730c | 79 | // Fragen ob überhaupt etwas im RX-Reg steht |
hollegha2 | 0:9ac39e20730c | 80 | if( !pc.IsDataAvail() ) |
hollegha2 | 0:9ac39e20730c | 81 | return; |
hollegha2 | 0:9ac39e20730c | 82 | |
hollegha2 | 0:9ac39e20730c | 83 | // wenn etwas im RX-Reg steht |
hollegha2 | 0:9ac39e20730c | 84 | // Kommando lesen |
hollegha2 | 0:9ac39e20730c | 85 | cmd = ua0.GetCommand(); |
hollegha2 | 0:9ac39e20730c | 86 | |
hollegha2 | 2:100244cef3d6 | 87 | // mit dem Command=2 die Frequenz verstellen |
hollegha2 | 0:9ac39e20730c | 88 | if( cmd==2 ) { |
hollegha2 | 2:100244cef3d6 | 89 | float frequ = ua0.ReadF(); |
hollegha2 | 2:100244cef3d6 | 90 | fg1.SetFrequ(frequ); |
Lenschinki | 3:c8c3b755ef54 | 91 | rg1.SetFrequ(frequ); |
Lenschinki | 3:c8c3b755ef54 | 92 | tg1.SetFrequ(frequ); |
Lenschinki | 3:c8c3b755ef54 | 93 | sg1.SetFrequ(frequ); |
hollegha2 | 2:100244cef3d6 | 94 | ua0.SvMessage("Set Frequ"); |
hollegha2 | 2:100244cef3d6 | 95 | } |
hollegha2 | 2:100244cef3d6 | 96 | if( cmd==3 ) { |
Lenschinki | 3:c8c3b755ef54 | 97 | int points = ua0.ReadI16(); |
Lenschinki | 3:c8c3b755ef54 | 98 | fg1.SetPointsPerPeriod(points); |
Lenschinki | 3:c8c3b755ef54 | 99 | rg1.SetPointsPerPeriod(points); |
Lenschinki | 3:c8c3b755ef54 | 100 | tg1.SetPointsPerPeriod(points); |
Lenschinki | 3:c8c3b755ef54 | 101 | ua0.SvMessage("Set Points"); |
Lenschinki | 3:c8c3b755ef54 | 102 | } |
Lenschinki | 3:c8c3b755ef54 | 103 | if( cmd ==4) |
Lenschinki | 3:c8c3b755ef54 | 104 | { |
Lenschinki | 3:c8c3b755ef54 | 105 | mode = ua0.ReadI16(); |
hollegha2 | 0:9ac39e20730c | 106 | } |
Lenschinki | 3:c8c3b755ef54 | 107 | |
hollegha2 | 0:9ac39e20730c | 108 | } |
hollegha2 | 0:9ac39e20730c | 109 | |
hollegha2 | 0:9ac39e20730c | 110 |