![](/media/cache/profiles/cynthia_sadaharuaoki_square.png.50x50_q85.png)
Example code for 'Mechatronics Class'
counter.h@2:83a817de162e, 2019-10-14 (annotated)
- Committer:
- ykuroda
- Date:
- Mon Oct 14 02:35:03 2019 +0000
- Revision:
- 2:83a817de162e
1st commit
Who changed what in which revision?
User | Revision | Line number | New 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 |