BULME_AHEL20
/
LPC_HL_FUNC_GENERATOR_DAC
Function generator
FuncGenMain.cpp
- Committer:
- hollegha2
- Date:
- 2016-03-17
- Revision:
- 2:100244cef3d6
- Parent:
- ProcVisDemo.cpp@ 1:e88b745f2ca2
- Child:
- 3:c8c3b755ef54
File content as of revision 2:100244cef3d6:
#include "mbed.h" #include "Serial_HL.h" #include "FuncGen.h" SerialBLK pc(USBTX, USBRX); SvProtocol ua0(&pc); // BusOut leds(LED1,LED2,LED3,LED4); Bertl14 // M0-Board BusOut leds(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); void CommandHandler(); void ExecSignalChain(); RectGen fg1; float ampl1 = 1.0; // float v1; // Wert nach dem Koeffizientenglied int main(void) { pc.format(8,SerialBLK::None,1); pc.baud(500000); // 115200 leds = 9; ua0.SvMessage("FuncGenMain"); // Meldung zum PC senden Timer stw; stw.start(); while(1) { CommandHandler(); if( (stw.read_ms()>10) ) { // 100Hz // dieser Teil wird mit 10Hz aufgerufen stw.reset(); ExecSignalChain(); if( ua0.acqON ) { // nur wenn vom PC aus das Senden eingeschaltet wurde // wird auch etwas gesendet ua0.WriteSV(1, v1); } } } return 1; } // Einen Abtastschritt der Signalverarbeitungskette durchrechnen // 100Hz zum Testen und alles Visualisieren // 40kHz zum Anhören void ExecSignalChain() { fg1.CalcOneStep(); v1 = ampl1 * fg1.val; // Koeffizientenglied rechnen } void CommandHandler() { uint8_t cmd; // Fragen ob überhaupt etwas im RX-Reg steht if( !pc.IsDataAvail() ) return; // wenn etwas im RX-Reg steht // Kommando lesen cmd = ua0.GetCommand(); // mit dem Command=2 die Frequenz verstellen if( cmd==2 ) { float frequ = ua0.ReadF(); fg1.SetFrequ(frequ); ua0.SvMessage("Set Frequ"); } // mit dem Command=3 die Amplitude verstellen if( cmd==3 ) { ampl1 = ua0.ReadF(); ua0.SvMessage("Set Ampl"); } }