コンテンツにスキップ

TIM

TIMとは

TIM(Timer)はマイコンに搭載されている「時間を測る・作るための周辺機能」である。

簡単に言うと

時間を正確にカウントする専用回路

である。


STM32などでは超重要な機能で、以下に使われる。

  • PWM生成
  • 周期処理
  • 割り込み制御
  • パルス計測(エンコーダなど)
  • 時間測定

TIMの基本動作

TIMは内部クロックを使ってカウントを進める。

クロック
 ↓
カウンタ +1
 ↓
一定値でリセット

0 → 1 → 2 → 3 → ... → 999 → 0

基本構成

TIMは主に以下で構成される。

  • カウンタ(CNT)
  • プリスケーラ(PSC)
  • オートリロードレジスタ(ARR)

プリスケーラ(PSC)

クロックを分周する機能。


システムクロック = 72MHz
PSC = 7199

の場合

72MHz / 7200 = 10kHz

になる。


つまり

カウント速度を遅くする機能

である。


オートリロード(ARR)

カウンタの最大値を決める。


ARR = 9999

なら

0 → 9999 → リセット

で周期が決まる。


TIMの周期計算

周期は以下で決まる。

周期 = (PSC + 1) × (ARR + 1) / クロック

クロック = 72MHz
PSC = 7199
ARR = 9999

計算

72MHz / 7200 = 10kHz
10kHz / 10000 = 1Hz

つまり

1秒周期

になる。


TIMのモード

TIMには複数の動作モードがある。


① アップカウントモード

0 → 1 → 2 → 3 → ...

一般的な使い方。


② ダウンカウントモード

9999 → 9998 → ...

③ センターアラインモード

0 → 9999 → 0

PWM制御でよく使われる。


PWMとの関係

TIMの最も重要な用途の一つがPWM生成である。


PWMとは

ONとOFFを高速に繰り返す信号

ON ON OFF ON OFF OFF ...

TIMで以下を制御する

  • 周波数
  • デューティ比

PWM例

ARR = 999
CCR = 500

デューティ比

50%

出力

ON 50%
OFF 50%

割り込みとの関係

TIMは一定周期で割り込みを発生できる。


1msごとに割り込み

用途

  • 制御ループ
  • センサ読み取り
  • タイマー処理

エンコーダ計測

TIMは回転センサの読み取りにも使える。


モータ回転
 ↓
パルス入力
 ↓
TIMカウント

これで

回転数
速度
位置

が計算できる。


入力キャプチャ

TIMは外部信号の時間測定もできる。


パルス幅測定

用途

  • 超音波センサ
  • 周波数測定

出力コンペア

特定のタイミングで出力を変える機能。


指定カウントでLED点灯

STM32でのTIM構成

CubeMXでは以下のように設定する。

TIM1
TIM2
TIM3

など。


それぞれ用途が違う。


TIM 用途
TIM1 高機能PWM
TIM2 汎用タイマ
TIM3 PWM / 割り込み

TIMとクロック

TIMはシステムクロックに依存する。


APB1 / APB2クロック

クロック設定を間違えると

PWM周波数ズレ
時間ズレ

が起きる。


よくあるトラブル

周波数が合わない

クロック設定ミス。


PWMが出ない

GPIO設定ミス(AF設定忘れ)。


割り込みが来ない

NVIC設定忘れ。


デューティ比がおかしい

CCR設定ミス。


Asterでの利用例

TIMはAsterでもかなり重要。


モータ制御

PWM生成
↓
DRV8871

制御ループ

1ms周期
↓
PID制御

センサ読み取り

エンコーダ
↓
回転速度計算

TIMの重要性

TIMは単なるタイマーではなく

制御システムの心臓部

である。


PWM・PID・エンコーダ・通信周期など

ほぼすべての制御系に関わる。


まとめ

TIMはマイコンの時間制御機能である。

  • カウント機能を持つ
  • PWM生成ができる
  • 割り込みを発生できる
  • エンコーダ計測に使える
  • 制御周期の基礎になる

組み込み開発ではGPIOの次に重要と言ってもいいレベルのコア機能である。