22
R8C タタタタタタ

R8C タイマの基礎

Embed Size (px)

DESCRIPTION

R8C タイマの基礎. タイマの概要. ここでは、タイマの種類やできることの概要を学びます. タイマで出来ること. 一定の時間間隔を得る 一定時間間隔毎に割込みを発生させる パルス信号の出力 パルス数のカウント パルス幅やパルス周期の測定 ・・・ など. 一定時間間隔を得る. 時間. 割込み. クロックをもとに、一定時間間隔を得る まず、カウンタの値を任意の 初期値 (例  10 )に設定 クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす - PowerPoint PPT Presentation

Citation preview

Page 1: R8C  タイマの基礎

R8C タイマの基礎

Page 2: R8C  タイマの基礎

ここでは、タイマの種類やできることの概要を学びます

タイマの概要

Page 3: R8C  タイマの基礎

タイマで出来ること

一定の時間間隔を得る 一定時間間隔毎に割込みを発生させる

パルス信号の出力 パルス数のカウント パルス幅やパルス周期の測定 ・・・ など

Page 4: R8C  タイマの基礎

一定時間間隔を得る

時間

•クロックをもとに、一定時間間隔を得る1. まず、カウンタの値を任意の初期値(例 10)に設定2. クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす3. 同じことを繰り返し、カウンタがアンダーフローしたら( 0 からさらに1減らしたら)

• カウンタの値を初期値に戻す• 割込み

4. 以後、2→3を繰り返し

割込み割込み

Page 5: R8C  タイマの基礎

一定時間間隔を得る

時間

•クロックをもとに、一定時間間隔を得る1. まず、カウンタの値を任意の初期値(例 10)に設定2. クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす3. 同じことを繰り返し、カウンタがアンダーフローしたら( 0 からさらに1減らしたら)

• カウンタの値を初期値に戻す• 割込み

4. 以後、2→3を繰り返し

割込み割込み

Page 6: R8C  タイマの基礎

一定時間間隔を得る

時間

•クロックをもとに、一定時間間隔を得る1. まず、カウンタの値を任意の初期値(例 10)に設定2. クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす3. 同じことを繰り返し、カウンタがアンダーフローしたら( 0 からさらに1減らしたら)

• カウンタの値を初期値に戻す• 割込み

4. 以後、2→3を繰り返し

割込み割込み

Page 7: R8C  タイマの基礎

一定時間間隔を得る

時間

•クロックをもとに、一定時間間隔を得る1. まず、カウンタの値を任意の初期値(例 10)に設定2. クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす3. 同じことを繰り返し、カウンタがアンダーフローしたら( 0 からさらに1減らしたら)

• カウンタの値を初期値に戻す• 割込み

4. 以後、2→3を繰り返し

割込み割込み

Page 8: R8C  タイマの基礎

一定時間間隔を得る

時間

•クロックをもとに、一定時間間隔を得る1. まず、カウンタの値を任意の初期値(例 10)に設定2. クロックを利用してカウンタを1減らす(たとえば、 20MHz(50ns)) で1だけ減らす3. 同じことを繰り返し、カウンタがアンダーフローしたら( 0 からさらに1減らしたら)

• カウンタの値を初期値に戻す• 割込み

4. 以後、2→3を繰り返し

割込み割込み

• この動作で、カウンタとはプログラム中の変数ではない(ソフトウェアで機能を実現しているのではない)

• 機能はハードウェアで実現されている(レジスタで初期値等を設定すれば自動的に一定時間間隔の割込みが発生する)

Page 9: R8C  タイマの基礎

パルス信号を出力

時間

• 割込みの代わりに、ある出力端子の電圧を反転させる機能をもたせれば• パルス信号を出力できる

出力

Page 10: R8C  タイマの基礎

パルス信号を出力2

時間

• カウンタに設定できる初期値を2つ用意して交互に利用すれば(たとえば、 High 出力時間を決めるカウント値=2、        Low 出力時間を決めるカウント値=10 など)

• パルス信号を出力できる

出力

Page 11: R8C  タイマの基礎

パルス数カウント

パルス10回

時間

• これまでは、カウンタは内部クロックを元に動作していた• カウンタを、外部から入力されるパルスをもとに動作させたら?

                 ↓• 外部からの一定数のパルスが入力される毎に割込み発生

割込み割込み

Page 12: R8C  タイマの基礎

パルス数カウント

時間

• これまでは、カウンタは内部クロックを元に動作していた• カウンタを、外部から入力されるパルスをもとに動作させたら?

                 ↓• 外部からの一定数のパルスが入力される毎に割込み発生

パルス10回

割込み割込み

Page 13: R8C  タイマの基礎

パルス数カウント

時間

• これまでは、カウンタは内部クロックを元に動作していた• カウンタを、外部から入力されるパルスをもとに動作させたら?

                 ↓• 外部からの一定数のパルスが入力される毎に割込み発生

パルス10回

割込み割込み

Page 14: R8C  タイマの基礎

パルス数カウント

時間

• これまでは、カウンタは内部クロックを元に動作していた• カウンタを、外部から入力されるパルスをもとに動作させたら?

                 ↓• 外部からの一定数のパルスが入力される毎に割込み発生

パルス10回

割込み割込み

Page 15: R8C  タイマの基礎

パルス数カウント

時間

• これまでは、カウンタは内部クロックを元に動作していた• カウンタを、外部から入力されるパルスをもとに動作させたら?

                 ↓• 外部からの一定数のパルスが入力される毎に割込み発生

パルス10回

割込み割込み

Page 16: R8C  タイマの基礎

タイマで出来ること

一定の時間間隔を得る 一定時間間隔毎に割込みを発生させる

パルス信号の出力 パルス数のカウント パルス幅やパルス周期の測定 ・・・ など

Page 17: R8C  タイマの基礎

R8C/Tiny タイマの種類(p253) タイマ X

8 ビット・プリスケーラ付き 8 ビット・タイマ パルス出力モード /パルス幅測定モード等がある

タイマ Z 8 ビット・プリスケーラ付き 8 ビット・タイマ ワンショット発生モード等がある

タイマ C 16 ビット・タイマ インプット・キャプチャ /アウトプット・コン

ペアモード等がある

Page 18: R8C  タイマの基礎

カウンタのカウント方法 プリスケーラ付き (タイマ X  、 タイマ Z)( P255 図 21-1 など)

カウントソース•f1:20MHz•f8:(20/8)MHz•fRING:•f2:(20/2)MHz

カウントソース•f1:20MHz•f8:(20/8)MHz•fRING:•f2:(20/2)MHz

8 ビットプリスケーラ•初期値は 0 ~ 255まで設定できる

8 ビットプリスケーラ•初期値は 0 ~ 255まで設定できる

8 ビットカウンタ•初期値は 0 ~ 255まで設定できる

8 ビットカウンタ•初期値は 0 ~ 255まで設定できる

例1)f1: 20MHz

周期T=0.05μs

プリスケーラ初期値

prex = 0

カウンタ初期値tx = 0

初期化prex=

0tx=0

1. プリスケーラダウンカウント2. プリスケーラアンダーフロー3. カウンタダウンカウント4. カウンタアンダーフロー5. イベント(割込みや出力反転等 )

タイマ周期0.05μs×(prex+1)×(tx+1)=0.05μs ( p259 式 (21-1) )

Page 19: R8C  タイマの基礎

カウンタのカウント方法 プリスケーラ付き (タイマ X  、 タイマ Z)( P255 図 21-1 など)

カウントソース•f1:20MHz•f8:(20/8)MHz•fRING:•f2:(20/2)MHz

カウントソース•f1:20MHz•f8:(20/8)MHz•fRING:•f2:(20/2)MHz

8 ビットプリスケーラ•初期値は 0 ~ 255まで設定できる

8 ビットプリスケーラ•初期値は 0 ~ 255まで設定できる

8 ビットカウンタ•初期値は 0 ~ 255まで設定できる

8 ビットカウンタ•初期値は 0 ~ 255まで設定できる

例2)f 8 :2.5MHz

周期 T=0.4μs

プリスケーラ初期値

prex = 2

カウンタ初期値tx = 1

初期化prex=

2tx=1

タイマ周期0.4μs×(prex+1)×(tx+1)=0.4μs×3×2 = 2.4μs ( p259 式 (21-1) )

1. プリスケーラダウンカウント2. プリスケーラアンダーフロー3. プリスケーラ初期化(prex=2)3. カウンタダウンカウント

1. プリスケーラダウンカウント1. プリスケーラダウンカウント1. プリスケーラダウンカウント1. プリスケーラダウンカウント1. プリスケーラダウンカウント2. プリスケーラアンダーフロー3. プリスケーラ初期化( prex=2)4. カウンタダウンカウント5. カウンタアンダーフロー6. カウンタ初期化( tx=1) 5. イベント

Page 20: R8C  タイマの基礎

演習 1 :

タイマ X インターバル・タイマ・モードによるLED 点滅

p257-260 を読み、プログラムを作成・実行して動作を確認する プログラムは、リスト 21-1 ~ 21-3 ( p260 )および set_MainCLK 関数 (p199) を基

にして作成する 割込み(可変ベクタテーブル)を利用するため、設定として、教科書 p211 「コンパイ

ルオプションを使う方法」(図 19-7 )を読み、 -fMVT オプションを指定する タイマだけでは動作が速すぎるため、割込み処理関数が 50 回呼び出されると LED が

反転するようにプログラムされている(リスト 21-3 ) シミュレータで実行の場合は、タイマ X 割込みをシミュレータで動作させるために、

[ 表示 ]-[CPU]-[I/O タイミング設定 ]によって、 I/O タイミング設定ウインドウを開き、 [ 読み込み ]によって、 timerx.ios ファイルを読み込む。( timerx.ios ファイルは配布します)また、 [ 表示 ]-[ グラフィック ]-[GUI I/O]によって、 GUI I/O ウインドウを開き、右クリック「読み込み」で、 timer_x.pnl を読み込んで、 LED を GUI で確認できるようにする。( timer_x.pnl は配布)その後、シミュレータを実行する。 

Page 21: R8C  タイマの基礎

シミュレーション図解

シミュレータシミュレータ

コンパイルしたプログラムをダウンロード

タイマなどのハードウエアの動作を記述したスクリプトファイルを登録

GUI I/O を作成し利用

デバッグ ダウンロード

表示 CPU   I/O タイミング設定     timerx.ios ファイル(このファイルは配布)

表示 グラフィック   GUI I/O     timer_x.pnl ファイル    (このファイルは配布)

Page 22: R8C  タイマの基礎

演習 2 :

タイマ Z インターバル・タイマ・モードによるLED 点滅

p261-268 を読み、プログラムを作成・実行して動作を確認する 教科書では、 LED を3個利用しているが、授業

用回路には2個( p1_1, p1_2 )しかないので、 2 個の LED で動作するようにプログラムを修正する。