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で動作するようにプログラムを修正する。