R8C/Tiny タイマ スライドショー

Download Report

Transcript R8C/Tiny タイマ スライドショー

Slide 1

R8C タイマの基礎


Slide 2

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


Slide 3

タイマで出来ること


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






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


Slide 4

一定時間間隔を得る
時間

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


Slide 5

一定時間間隔を得る
時間

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


Slide 6

一定時間間隔を得る
時間

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


Slide 7

一定時間間隔を得る
時間

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


Slide 8

一定時間間隔を得る
時間

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



この動作で、カウンタとはプログラム中の変数ではない(ソフトウェアで機能を実現しているの
ではない)
機能はハードウェアで実現されている(レジスタで初期値等を設定すれば自動的に一定時間間
隔の割込みが発生する)


Slide 9

パルス信号を出力
時間

出力




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


Slide 10

パルス信号を出力2
時間

出力




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


Slide 11

パルス数カウント
時間

パルス10

割込み





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

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


Slide 12

パルス数カウント
時間

パルス10回
割込み





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

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


Slide 13

パルス数カウント
時間

パルス10回

割込み





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

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


Slide 14

パルス数カウント
時間

パルス10回

割込み





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

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


Slide 15

パルス数カウント
時間

パルス10回

割込





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

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


Slide 16

タイマで出来ること


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






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


Slide 17

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


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



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



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

アモード等がある


Slide 18

カウンタのカウント方法
プリスケーラ付き (タイマX 、 タイマZ)(P255 図
21-1など)
カウントソース
•f1:20MHz
•f8:(20/8)MHz
•fRING:
•f2:(20/2)MHz

8ビットプリスケー

•初期値は0~255ま
で設定できる

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

プリスケーラ初期値
prex = 0

カウンタ初期値
tx = 0

例1)
f1:20MHz
周期T=0.05μs

初期化
prex=0
tx=0

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

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


Slide 19

カウンタのカウント方法
プリスケーラ付き (タイマX 、 タイマZ)(P255 図
21-1など)
カウントソース
•f1:20MHz
•f8:(20/8)MHz
•fRING:
•f2:(20/2)MHz

8ビットプリスケー

•初期値は0~255ま
で設定できる

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

プリスケーラ初期値
prex = 2

カウンタ初期値
tx = 1

例2)
f8:2.5MHz
周期T=0.4μs

初期化
prex=2
tx=1

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

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


Slide 20

演習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は配布)
その後、シミュレータを実行する。


Slide 21

シミュレーション図解
コンパイルしたプログラム
をダウンロード

GUI I/Oを作成し利用
シミュレータ

デバッグ
ダウンロード

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

タイマなどのハードウエアの動作を
記述したスクリプトファイルを登録
表示
CPU
I/Oタイミング設定
timerx.iosファイル(このファイルは配布)


Slide 22

演習2:

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


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

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