Provides a simple way to generate complex square wave signals on any available pin. In addition the SignalGenerator can generate a carrier wave which is useful when generating IR signals to control electronic devices like a TV etc. The signal generation can be carried out either synchronously or asynchronously. In the case of synchronous signal generation all interrupts can optionally be disabled to improve timing accuracy.
Diff: SignalGenerator.h
- Revision:
- 0:b7c65c0d82d3
- Child:
- 1:4a1bcc41c473
diff -r 000000000000 -r b7c65c0d82d3 SignalGenerator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SignalGenerator.h Fri Sep 12 04:04:46 2014 +0000 @@ -0,0 +1,27 @@ +#ifndef __SIGNALGENERATOR_H__ +#define __SIGNALGENERATOR_H__ + +/** Simplifies generation of a high frequency signal on any pin with optional support for a carrier frequency. +*/ +class SignalGenerator +{ + public: + /** Create a SignalGenerator tied to the specified pin. */ + SignalGenerator(PinName pin); + + /** Set the state of the pin associated with the SignalGenerator. */ + void set(bool pinState); + + /** Set parameter and generate the corresponding signal on the pin associated with the SignalGenerator. + * @param initialState Defines the initial state of the signal pin + * @param timingBuffer Specificies the wime periods in microseconds before the signal pin changes state + * @param bufferCount The count of transition times passed in the timingBuffer + * @param lastStateHoldTime The time in microseconds that the last state is held + * @param carrierFrequency The carrier frequency in Hz + */ + void set(bool initialState, uint32_t timingBuffer[], uint16_t bufferCount, uint32_t lastStateHoldTime = 0, int carrierFrequency = -1); + private: + DigitalOut _pin; +}; + +#endif //__SIGNALGENERATOR_H__ \ No newline at end of file