Signal Generator
Dependencies: IniManager RA8875 Watchdog mbed-rtos mbed
Fork of speaker_demo_Analog by
Diff: SignalGenDAC.h
- Revision:
- 2:8f71b71fce1b
- Child:
- 4:10281ddb673d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SignalGenDAC.h Sun Jan 15 03:11:22 2017 +0000 @@ -0,0 +1,68 @@ + +// +// Derived from AN10917: Memory to DAC data transfers using the LPC1700's DMA +// +#ifndef SIGNALGENDAC_H +#define SIGNALGENDAC_H + +#include "mbed.h" + +#include "SignalGenDefs.h" // access the waveform mode data type + + +#define SIGNAL_MEM_ENTRIES 2048 // size of the DAC buffer + +class SignalGenDAC { + +public: + + /// Constructor, which is used to define the hardware + /// + /// @param[in] aout is the analog output pin + /// @param[in] minV is based on the A/D low reference voltage (default 0.0) + /// @param[in] maxV is based on the A/D high reference voltage (default 3.0) + /// + SignalGenDAC(PinName aout, float minV = 0.0, float maxV = 3.0); + + /// Destructor + /// + ~SignalGenDAC(); + + /// Create the waveform in the private memory buffer that is used to DMA to the DAC + /// + /// @param[in] mode defines the waveform: Sine, Square, Triangle, Sawtooth, User + /// @param[in] frequency defines the desired frequency + /// @param[in] dutycycle defined the duty cycle of the waveform to be created. The value + /// is range limited to 5 to 95 (representing 5 to 95 %). + /// @param[in] voltage is the peak-to-peak voltage, and it range limited to 0 to 3.0. + /// @param[in] offset is the offset voltage, and is range limited to 0 to 3.0. + /// + void PrepareWaveform(SG_Mode mode, float frequency, float dutycycle, float voltage, float offset); + + /// Start the signal, in either a oneshot, or continuous mode. + /// + /// @param[in] oneShot defaults false, which causes continuous mode. + /// When set true, one cycle is produced. + /// + void Start(bool oneShot = false); + + /// Stop the signal, if it is running. + /// + void Stop(void); + + /// Determine if the signal is running. + /// + /// @returns true if the signal is running. + /// + bool isRunning(void) { return isOn; } + +private: + bool isOn; // tracks whether the signal is on or off + AnalogOut * aout; + float minV; // Based on the A/D hardware + float maxV; // Based on the A/D hardware + /// range limit a value. + float rangelimit(float value, float min, float max); +}; + +#endif // SIGNALGENDAC_H \ No newline at end of file