第3章 システム・クロック切り替えの応用
5.4 ワンショット・パルス出力
この例では,キー入力により,ソフトウエア・トリガを設計し,10 ms後,1 ms間 H アクティブ出力を行いま す。
図5−14 ソフトウエア・トリガによるワンショット・パルス出力動作のタイミング
カウント・クロック
TM0カウント値
TO0/P30端子出力
CR01設定値
CR00設定値
OSPT
INTTM01
INTTM00
F̲TRG
0000 N N+1 M−2 M−1 M 0000
N
M
10 ms 1 ms
備考 F̲TRG:ワンショット・パルスが出力中であることを示すフラグです。詳細は(2)使 用例を参照してください。
(1)パッケージの説明
<パブリック宣言シンボル>
SOP̲INIT:ワンショット・パルス出力初期設定サブルーチン
<使用するレジスタ>
なし
<使用するRAM>
なし
<使用するフラグ>
なし
<ネスティング・レベル>
1レベル2バイト
<使用するハードウエア>
●16ビット・タイマ/イベント・カウンタ
<初期設定>
●OSMS=#00000001B 発振モード選択レジスタ 分周回路を使用しない
●CLR1 P3.0 ポート3のビット0の出力ラッチを0に設定
●CLR1 PM3.0 ポート・モード・レジスタ3のビット0を出力モードに設定
●CALL !SOP̲INIT サブルーチンSOP̲INITで設定しています。
<起動方法>
16ビット・タイマ出力コントロール・レジスタ(TOC0)のビット6(OSPT)をセットしてください。
EXTRN SOP̲INIT M1PRO CSEG RES̲STA:
OSMS=#00000001B ;分周回路を使用しない
CLR1 P3.0 :兼用端子使用時は出力ラッチ0に設定 CLR1 PM3.0 :兼用端子使用時は出力モードに設定 CALL !SOP̲INIT ;ワンショット・パルス出力初期設定ルーチン ・
・ if(キー要求あり)
if̲bit(!F̲TRG) ;前回の出力終了?
SET1 OSPT ; 16ビット・カウンタ・クリア&スタート SET1 F̲TRG ; ワンショット・パルス・トリガ・フラグ・セット endif ;
endif ;
if̲bit(TMIF00) ;ワンショット・パルス出力終了?
CLR1 F̲TRG ; ワンショット・トリガ・フラグ・クリア CLR1 TMIF00 ; TMIF00要求フラグ・クリア endif ;
・ ・
(3)SPDチャート
タイマ動作停止
16ビット・タイマ・レジスタのカウント・クロックの選択 CR00,CR01をコンペア・レジスタとして使用
コンペア・レジスタ00(CR00)設定
(トリガ開始から2回目のTO0出力反転までの時間)
コンペア・レジスタ01(CR01)設定
(トリガ開始から1回目のTO0出力反転までの時間)
ワンショット・パルス出力モード選択
TM0とCR00の一致でスタート(タイマ動作許可)
SOP̲INIT
(2)使 用 例
このパッケージの使用例では,パルス出力中に再度1 6 ビット・タイマ出力コントロール・レジスタ
(TOC0)のビット6(OSPT)のセットを行わないために,図5−14に示すように,OSPTフラグがセット されると同時に,F̲TRGフラグをセットします。F̲TRGフラグがセットされている間(パルス出力中)に,
次の出力要求が発生してもOSPTフラグのセットを行わないよう処理します。ワンショット・パルス出力終了 後(INTTM00発生時),F̲TRGフラグをクリアしてください。
(4)プログラム・リスト
PUBLIC SOP̲INIT OTPINIT CSEG SOP̲INIT:
TMC0=#00000000B ;タイマ動作停止
TCL0=#01000000B ;16ビット・タイマ・レジスタのカウント・クロック 1.05MHz CRC0=#00000000B ;CR00,CR01をコンペア・レジスタとして使用 CR00=#11550‑1 ;コンペア・レジスタ設定 11ms
CR01=#10500‑1 ;コンペア・レジスタ設定 10ms TOC0=#00110111B ;ワンショット・パルス・モード選択
TMC0=#00001100B ;TM0とCR00の一致でスタート(タイマ動作許可) RET ;
END