24日間連続してカウントするタイマークラスです。クラスの実装が公開されていないので理由は不明ですが、mbed標準のTimerクラスは2148秒までしかカウントしてくれません。そのため、せめてArduinoと同等のカウントが可能なように作成しました。

Dependents:   gps_com

Committer:
morimoriYNCT
Date:
Tue Jul 15 04:47:11 2014 +0000
Revision:
0:764aaee2b395
Child:
1:2441ccdcd627
24????????????????????????????????????????????????mbed???Timer????2148????????????????????????...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
morimoriYNCT 0:764aaee2b395 1 #include "mbed.h"
morimoriYNCT 0:764aaee2b395 2
morimoriYNCT 0:764aaee2b395 3
morimoriYNCT 0:764aaee2b395 4 class TimerExtended
morimoriYNCT 0:764aaee2b395 5 {
morimoriYNCT 0:764aaee2b395 6 private:
morimoriYNCT 0:764aaee2b395 7 Timer _t;
morimoriYNCT 0:764aaee2b395 8 Ticker _tk;
morimoriYNCT 0:764aaee2b395 9 long milli_second;
morimoriYNCT 0:764aaee2b395 10
morimoriYNCT 0:764aaee2b395 11 void update()
morimoriYNCT 0:764aaee2b395 12 {
morimoriYNCT 0:764aaee2b395 13 if(this->milli_second < 2147483645)
morimoriYNCT 0:764aaee2b395 14 this->milli_second += this->_t.read_ms();
morimoriYNCT 0:764aaee2b395 15 this->_t.reset();
morimoriYNCT 0:764aaee2b395 16 }
morimoriYNCT 0:764aaee2b395 17 public:
morimoriYNCT 0:764aaee2b395 18 TimerExtended()
morimoriYNCT 0:764aaee2b395 19 {
morimoriYNCT 0:764aaee2b395 20 this->milli_second = 0l;
morimoriYNCT 0:764aaee2b395 21 }
morimoriYNCT 0:764aaee2b395 22
morimoriYNCT 0:764aaee2b395 23 // start timer
morimoriYNCT 0:764aaee2b395 24 void start()
morimoriYNCT 0:764aaee2b395 25 {
morimoriYNCT 0:764aaee2b395 26 this->_tk.attach(this, &TimerExtended::update, 2000.0); // 2000.0 should be lower then max value of Timer obj.
morimoriYNCT 0:764aaee2b395 27 this->_t.start();
morimoriYNCT 0:764aaee2b395 28 }
morimoriYNCT 0:764aaee2b395 29
morimoriYNCT 0:764aaee2b395 30 // like Arduino lib.
morimoriYNCT 0:764aaee2b395 31 long millis()
morimoriYNCT 0:764aaee2b395 32 {
morimoriYNCT 0:764aaee2b395 33 (void)this->update();
morimoriYNCT 0:764aaee2b395 34 return this->milli_second;
morimoriYNCT 0:764aaee2b395 35 }
morimoriYNCT 0:764aaee2b395 36
morimoriYNCT 0:764aaee2b395 37 // return time [s] in double
morimoriYNCT 0:764aaee2b395 38 double read()
morimoriYNCT 0:764aaee2b395 39 {
morimoriYNCT 0:764aaee2b395 40 return (double)this->millis() / 1000.0;
morimoriYNCT 0:764aaee2b395 41 }
morimoriYNCT 0:764aaee2b395 42
morimoriYNCT 0:764aaee2b395 43 // return time [ms]
morimoriYNCT 0:764aaee2b395 44 long read_ms()
morimoriYNCT 0:764aaee2b395 45 {
morimoriYNCT 0:764aaee2b395 46 return this->millis();
morimoriYNCT 0:764aaee2b395 47 }
morimoriYNCT 0:764aaee2b395 48
morimoriYNCT 0:764aaee2b395 49 };