Example code for 'Mechatronics Class'

Committer:
ykuroda
Date:
Mon Oct 14 02:35:03 2019 +0000
Revision:
2:83a817de162e
1st commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ykuroda 2:83a817de162e 1 //
ykuroda 2:83a817de162e 2 // Counter Class
ykuroda 2:83a817de162e 3 //
ykuroda 2:83a817de162e 4 // 2019.10.13 ... Originally written by Y.Kuroda
ykuroda 2:83a817de162e 5 //
ykuroda 2:83a817de162e 6 #ifndef _COUNTER_H
ykuroda 2:83a817de162e 7 #define _COUNTER_H
ykuroda 2:83a817de162e 8
ykuroda 2:83a817de162e 9 class Counter {
ykuroda 2:83a817de162e 10 public:
ykuroda 2:83a817de162e 11 Counter(PinName pin) : _interrupt(pin), _count(0) { // create the InterruptIn on the pin specified to Counter
ykuroda 2:83a817de162e 12 _interrupt.rise(callback(this, &Counter::increment)); // attach increment function of this counter instance
ykuroda 2:83a817de162e 13 _interrupt.fall(callback(this, &Counter::increment)); // attach increment function of this counter instance
ykuroda 2:83a817de162e 14 }
ykuroda 2:83a817de162e 15
ykuroda 2:83a817de162e 16 void increment() { _count++; }
ykuroda 2:83a817de162e 17 int read() { return _count; }
ykuroda 2:83a817de162e 18 int set(int c) { return _count=c; }
ykuroda 2:83a817de162e 19 int reset(){ return set(0); }
ykuroda 2:83a817de162e 20
ykuroda 2:83a817de162e 21 int operator=(int c) { return set(c); }
ykuroda 2:83a817de162e 22 operator int() { return read(); }
ykuroda 2:83a817de162e 23 Counter& operator=(Counter& c){ _count=c.read(); return *this; }
ykuroda 2:83a817de162e 24
ykuroda 2:83a817de162e 25 protected:
ykuroda 2:83a817de162e 26 InterruptIn _interrupt;
ykuroda 2:83a817de162e 27 volatile int _count;
ykuroda 2:83a817de162e 28 };
ykuroda 2:83a817de162e 29
ykuroda 2:83a817de162e 30 #endif
ykuroda 2:83a817de162e 31