Timer (Arduino)

(2014.6.23 作成)

 Arduino UNOでは16bitタイマーがひとつしかありませんが、このタイマーはArduinoライブラリではmillis/ microsで使用されていますので自由に変更が出来ません。このためこのTimerクラスはmillis / micros関数を利用して作らざるを得ず、とても制約の多いクラスになりました。

  • コンストラクタでの引数によってmillis / microsのどちらが使用されるか決まります。
  • カウンタを任意のタイミングで開始・停止が出来ません。
  • カウント値をリセットすることが出来ません。

コンストラクタ

プロトタイプ

Timer(

     const DKS::TimeUint &timeUnit =  

                                        DKS::TimeUnit_MilliSec);

戻り値

なし

 引数

DKS::TimeUint &timeUnit

タイマの動作単位

usまたはms

TimeUnit型

備考


サンプルコード

以下のコードで4ms周期でGPIOを上下させます。

#include <Wire.h>  //最初のコンパイル時だけコメント解除
#include <SPI.h>
#include <TimerOne.h>

#include "DKS_GPIO_Arduino.h"
#include "DKS_Timer_Arduino.h"

DKS::DigitalOut led;
DKS::Timer tim( DKS::TimeUnit_MilliSec);
uint32_t countValueNew(0), countValueOld(0);

void setup()
{
  const int ledPin =  4;
  led = DKS::DigitalOut(ledPin);
  tim.Start();
}

void loop()
{
        countValueNew = tim.ReadCounter();
        if ( (countValueNew-countValueOld) >= 4)
        {
            led.toggle();
            countValueOld = countValueNew;
        }
}