フリーランタイマー(カウンター)を使った時間計測

よくフリーランカウンターを用いて時間計測をするが、カウンターが一周したことを判定したくなるが、符号なしの場合、単純に引き算してよいとのこと。

 現在時間-スタート時間

計算しやすいので8ビットで確認する。

以下、計測開始時間が0xffで現在時間が0x01だと経過時間は2になることがわかる。

 

計算式                        
  現在時間 ー スタート時間 = ラップタイム  
                         
1周しないときの計算 9 - 7 = 2          
      BO D7 D6 D5 D4 D3 D2 D1 D0  
  現在時間   0 0 0 0 0 1 0 0 1 0x09
  スタート時間 0 0 0 0 0 0 1 1 1 0x07
      0 0 0 0 0 0 0 1 0 0x02
                         
1周したときの計算 1 - 255 = 2          
      BO D7 D6 D5 D4 D3 D2 D1 D0  
  現在時間   0 0 0 0 0 0 0 0 1 0x01
  スタート時間 0 1 1 1 1 1 1 1 1 0xff
      1 0 0 0 0 0 0 1 0  
    BO:ボローフラグ        
                         
                        経過時間
        1 1 1 1 1 1 1 1 0
        0 0 0 0 0 0 0 0 1
        0 0 0 0 0 0 0 1 2