かふぇルネ

コンペアマッチタイミング

コンペアマッチの発生タイミングについてかふぇルネに投稿しました。

タイマの機能の一つであるコンペアマッチですが、ユーザーが想定する周期と実際の設定値には差があるので注意が必要です。

cmpmacth

図はR8Cマイコンを例に取り上げています。TRCCNTはタイマのカウント、TRCGRAはコンペアマッチ指定値です。

コンペアマッチ指定値に「n」と書けば「n×クロック時間」と思いますが、実際は「(n+1)×クロック時間」となってしまいます。
これはコンペアマッチの判定タイミングが「タイマカウント更新時」となっているからです。

人間の頭ではタイマカウンタが更新された結果、指定値と一致してるかどうかを判断するように考えますが、R8Cでは更新された結果ではなく更新する前に判断します。つまり、コンペアマッチにnを指定していた場合、タイマカウントは既にnになっているにも関わらず、次のタイマカウント更新時(->n+1になるタイミング)にコンペアマッチと判定されます。

ある周期が計算上「5000×クロック」となる場合、コンペアマッチ指定値には「5000-1」を入力するのはこのためです。

この考え方はルネサスマイコンの内、SH2a(MTU2)、RX200(MTU2)、RX600(MTU2)、RL78(タイマRG)、R8C(タイマRG)に適用されます。
設計の際には頭の片隅に置いておいてください。

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!