« HC08マイコンの使い方QY4A編 -《15》 HC08マイコンのCPUレジスタ(4) | メイン | HC08マイコンの使い方QY4A編 -《17》 入力/出力ポート(2) »

HC08マイコンの使い方QY4A編 -
《16》 入力/出力ポート(1)


 第11回 一般的なマイコンが動く仕組み から 第15回 HC08マイコンのCPUレジスタ(4) まで 5回にわたって大まかな CPU の動きを見てきました。その範囲は下図の黄色く塗った部分に該当します(クリックで拡大)。 CPU と ROM、RAM をつないでいる太い矢印状の部分は、CPUバスとか内部バスと呼ばれているもので、制御線・信号線を束にしたものです。
 

qy4a_block_cpuromram1.gif

 下図は 第12回 で示したメモリ・マップの再掲です。 いま見ると、メモリと同じ空間に内蔵周辺機能モジュールの制御レジスタ(I/O制御レジスタ)が配置されていることの意味がよくわかるのではないでしょうか。 メモリの読み書きとまったく同じようにして、I/O制御レジスタを読み書きすることができるというわけです。

memory_map01.gifMC908QY4A のメモリ・マップ(一部省略)

 もちろんメモリとは異なり、I/O制御レジスタの場合は何番地に何の機能のレジスタが配置されていて、その中の各ビットの役割は・・・ということまでこと細かに決まっていますから、その使い方を知る必要があります。言い換えれば、I/O制御レジスタの使い方をマスタすれば、マイコン全体の制御ができるようになります。

 とはいえ、本当はもっと後で出てくる 「割り込み」 という仕組みが理解できるまではマイコン全体が理解できたとは言えないのですが、まずは普通の制御から始めましょう。

【 入力/出力ポート 】
 最初に理解しやすいところ、しかも非常に応用のきくところということで 汎用入出力ポートを説明します。この連載では用語が統一できていなくて申し訳ないのですが、第3回で紹介した QY4A英文データシートでは Input/Output Ports 、同じく QC16和文データシートでは 入力/出力ポート と書かれているものです。

 QY4A の場合はポートA(PTA) とポートB(PTB) があります。下図で黄色く塗った部分が該当個所です。グレーのところは説明済みのところです(ただし CPU に関しては、説明の続きを後のほうで行う予定)。
 

qy4a_block_ports1.gif

◆ 入力/出力ポート に関係する入出力ピン
 一つのピンに複数の機能が割り付けられている場合、同時に複数の機能を有効にすると優先順位の高い機能だけがそのピンの機能になります。

高い OSC > (ADC, IRQ, RST) > TIM > KBI > PORT 低い

qy4a_pins_ports.gif

 ここでいう優先順位とは、ピンに関してのみであり、内部の機能について優先順位が付いているわけではありません。たとえば、TCH1機能とAD1機能は同時に使用可能です。ただし、ピンの機能は AD1 になります。TCH1 機能はマイコン内部で利用することが可能です。

◆ 入力/出力ポート に関係する I/O制御レジスタ
 ポートAに関するレジスタを抜き出すと、次の 三つになります。
 

qy4a_register_pta.gif

 グレーで示された部分は実装なし、Rと表記された部分は将来のための予約ビットです。1バイト単位で書き込む場合など、これらのビットに書き込み動作をしてしまうときは 0 を書き込むのがよいでしょう。1バイト単位で読み出す場合など、これらのビットを読み出してしまうときは、該当するビットの内容を無視してください。

 本当に詳しく説明するとなると、データシートに書かれた内容をすべて書くようなことになってしまうので、細かいことまで知りたい場合はデータシートを開いていただくことにして、ここでは説明の流れで必要となる事柄だけに止めておくことにします。

ポートAデータ・レジスタ(PTA)
・各ビットに対応するポートの端子が入力方向のときは、このレジスタの各ビットを読み出すとそれに対応したレベル(結果は 0 または 1 )が読み出されます。
・各ビットに対応するポートが出力方向のときは、このレジスタの各ビットに 0 を書き込むとそのポートの端子に L(ロー、つまりGNDに近いレベル) が出力され、1 を書き込むとそのポートの端子に H(ハイ、つまり VDDに近いレベル) が出力されます。
・PTA2 は入力専用ポートです。
・出力方向に設定したポートを読み出した場合は、出力しているレベル( 0  または 1 )が読み出されます。
・入力方向に設定したポートに書き込みをした場合、その時点では何も起こりませんが、そのポートを出力方向に変更した時点で保存されていた内容が出力されます。
・このレジスタは、リセットの影響を受けません(パワーオン・リセット時は不定)。

 ほかに気を付ける点としては、ビット6 の位置に 入力/出力ポートに関係ない機能が入っています。それについては自動ウェイクアップ・モジュールのときに説明します。これは QY4A に特有のもので、QC16 では別の形で実現されています。また、QC16 ではこのレジスタにキーボード割り込みに関する機能を持たせていますが、QY4A にはありません。両方のデータシートを見るときは注意してください。

データ方向レジスタA(DDRA)
・各ビットに対応する入出力ポートを、入力方向にするか出力方向にするかを個別に指定します。ビット毎に 0 を書き込むと入力ポートに、1を書き込むと出力ポートになります。読み出すと、現在の設定値が読み出されます。
・ポートのPTA2は入力専用なので、このレジスタには対応するビットがありません(読み出すと常に0)。
・リセット時はすべて 0、 つまりすべて入力方向になります。

ポートA入力プルアップ・イネーブル・レジスタ(PTAPUE)

・各ビットに対応するポートに対して、マイコン内部に用意されたプルアップ抵抗を有効にするかどうかを個別に指定します。ビットごとに 0 を書き込むとプルアップ抵抗が無効、1 を書き込むとプルアップ抵抗が有効になります。ただし、該当するポートが出力方向のときは内部プルアップ抵抗は無効です。
・リセット時はすべて 0、 つまりすべて内部プルアップ抵抗は無効になります。
・ビット7 には、入力/出力ポートと関係ないものが入っています。これについてはクロック・ジェネレータのときに説明します。
・内部プルアップ抵抗の抵抗値は、約26kΩ(Min 16kΩ,Max 36kΩ)です。


 次回は、ポートBのレジスタを説明した後、具体的な使い方を紹介します。
 

 『参考文献』
「試しながら学ぶHC08マイコン入門」 (CQ出版)
  第1章  マイコン電子工作を始めよう
  第10章 統合開発環境CodeWarriorを使ってみる
筆者のホームページ 『マイコン工作の実験室』

組み込みエンジニア KAWANO

カテゴリ:

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/2144

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

カテゴリ

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1