positive or negative pulse width counter

Dependents:   test_hw_biniou

Revision:
1:d37d6388c179
Parent:
0:89bd4ad6027d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PulseWidthCounter.cpp	Thu Jul 11 19:15:42 2013 +0000
@@ -0,0 +1,27 @@
+#include "mbed.h"
+#include "InterruptIn.h"
+#include "PulseWidthCounter.h"
+
+PulseWidthCounter::PulseWidthCounter(PinName _interrupt,bool positive=true) : interrupt(_interrupt)     //constructa  
+{
+    if ( positive ) 
+    {   interrupt.rise(this,&PulseWidthCounter::start);
+        interrupt.fall(this,&PulseWidthCounter::stop);
+    }
+    else
+    {   interrupt.fall(this,&PulseWidthCounter::start);
+        interrupt.rise(this,&PulseWidthCounter::stop);
+    }
+}
+
+void PulseWidthCounter::start()
+{
+    _time.reset();
+    _time.start();
+}
+
+void PulseWidthCounter::stop()
+{
+    _time.stop();
+    count = _time.read_us();
+}