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.

Committer:
jebradshaw
Date:
Mon Jul 11 18:26:47 2016 +0000
Revision:
3:9efa965d2111
Parent:
2:67e16d628edc
20160711;

Who changed what in which revision?

UserRevisionLine numberNew 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 }