Timer for accumulating 10 ms intervals that does not overflow after ~30 min
This class simply creates a timer that accumulates 10 millisecond intervals which does not overflow after about 30 min.
RunTimer.cpp@3:9efa965d2111, 2016-07-11 (annotated)
- Committer:
- jebradshaw
- Date:
- Mon Jul 11 18:26:47 2016 +0000
- Revision:
- 3:9efa965d2111
- Parent:
- 2:67e16d628edc
20160711;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jebradshaw | 0:21dc6ad1a795 | 1 | #include "RunTimer.h" |
jebradshaw | 0:21dc6ad1a795 | 2 | |
jebradshaw | 0:21dc6ad1a795 | 3 | RunTimer::RunTimer(){ |
jebradshaw | 0:21dc6ad1a795 | 4 | this->ms=0; |
jebradshaw | 0:21dc6ad1a795 | 5 | this->sec =0; |
jebradshaw | 0:21dc6ad1a795 | 6 | this->min = 0; |
jebradshaw | 0:21dc6ad1a795 | 7 | this->hour = 0; |
jebradshaw | 2:67e16d628edc | 8 | this->day = 0; |
jebradshaw | 0:21dc6ad1a795 | 9 | |
jebradshaw | 0:21dc6ad1a795 | 10 | this->timer_10ms.attach(this, &RunTimer::timeAcc, .01); |
jebradshaw | 0:21dc6ad1a795 | 11 | } |
jebradshaw | 0:21dc6ad1a795 | 12 | |
jebradshaw | 0:21dc6ad1a795 | 13 | void RunTimer::timeAcc(void){ |
jebradshaw | 3:9efa965d2111 | 14 | ms_total += 10.0; |
jebradshaw | 0:21dc6ad1a795 | 15 | this->ms +=10; |
jebradshaw | 0:21dc6ad1a795 | 16 | if(this->ms == 1000){ |
jebradshaw | 0:21dc6ad1a795 | 17 | this->ms = 0; |
jebradshaw | 0:21dc6ad1a795 | 18 | this->sec++; |
jebradshaw | 0:21dc6ad1a795 | 19 | if(this->sec==60){ |
jebradshaw | 0:21dc6ad1a795 | 20 | this->sec=0; |
jebradshaw | 0:21dc6ad1a795 | 21 | this->min++; |
jebradshaw | 0:21dc6ad1a795 | 22 | if(this->min == 60){ |
jebradshaw | 0:21dc6ad1a795 | 23 | this->min=0; |
jebradshaw | 0:21dc6ad1a795 | 24 | this->hour++; |
jebradshaw | 0:21dc6ad1a795 | 25 | if(this->hour==24){ |
jebradshaw | 0:21dc6ad1a795 | 26 | this->hour=0; |
jebradshaw | 2:67e16d628edc | 27 | day++; |
jebradshaw | 0:21dc6ad1a795 | 28 | } |
jebradshaw | 0:21dc6ad1a795 | 29 | } |
jebradshaw | 0:21dc6ad1a795 | 30 | } |
jebradshaw | 0:21dc6ad1a795 | 31 | } |
jebradshaw | 0:21dc6ad1a795 | 32 | }//timeAcc |
jebradshaw | 0:21dc6ad1a795 | 33 | |
jebradshaw | 0:21dc6ad1a795 | 34 | void RunTimer::Reset(void){ |
jebradshaw | 1:134292d456c9 | 35 | this->ms=0; |
jebradshaw | 1:134292d456c9 | 36 | this->sec =0; |
jebradshaw | 1:134292d456c9 | 37 | this->min = 0; |
jebradshaw | 1:134292d456c9 | 38 | this->hour = 0; |
jebradshaw | 2:67e16d628edc | 39 | this->day = 0; |
jebradshaw | 0:21dc6ad1a795 | 40 | } |