An interface to read a PWM input signal, using InterruptIn
Dependents: PwmIn_HelloWorld PwmIn_ModSerial CHR6dm_reading tugboat ... more
Diff: main.cpp
- Revision:
- 0:2d3d93d7b204
diff -r 000000000000 -r 2d3d93d7b204 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Feb 17 18:32:34 2010 +0000 @@ -0,0 +1,49 @@ +// Example PwmIn class to detect PWM inputs, sford +// - Note: uses InterruptIn, so not available on p19/p20 + +#include "mbed.h" + +class PwmIn { +public: + PwmIn(PinName p) : _p(p) { + _p.rise(this, &PwmIn::rise); + _p.fall(this, &PwmIn::fall); + _period = 0.0; + _pulsewidth = 0.0; + _t.start(); + } + + void rise() { + _period = _t.read(); + _t.reset(); + } + + void fall() { + _pulsewidth = _t.read(); + } + + float period() { return _period; } + float pulsewidth() { return _pulsewidth; } + float dutycycle() { return _pulsewidth / _period; } + +protected: + InterruptIn _p; + Timer _t; + float _pulsewidth, _period; +}; + +PwmOut x(p21); +PwmOut y(p22); + +PwmIn a(p5); +PwmIn b(p6); + +int main() { + x = 0.5; + y = 0.2; + while(1) { + printf("a: pw = %f, period = %f\n", a.pulsewidth(), a.period()); + printf("b: pw = %f, period = %f\n", b.pulsewidth(), b.period()); + wait(2); + } +}