マイコン制御はじめの一歩、LEDを点灯させよう!S08ではじめるマイコン制御プログラミング(2)(1/3 ページ)

入出力装置なくして、マイコン・システムは成り立たない。今回は基本的な汎用I/O(GPIO)を使ってLED点灯プログラムに挑戦。

» 2008年10月27日 00時00分 公開
[高田浩,@IT MONOist]

 前回「マイコン・システムでどんなことができるのか?」の内容はいかがでしたか? マイコン・システムでどんなことができるのか、その一端を感じ取っていただけたのではないでしょうか。

 前回説明したように入出力装置がなくては、マイコン・システムは成り立ちません。そこで、今回はその中でも最もよく使われ、かつ扱いが簡単なデジタルの汎用I/O装置について学ぶことにしましょう。それでは、マイコン制御プログラミングのスタートです!

 なお、今回の解説ではリファレンス・マニュアル、データ・シート、DEMOQE128ボード(以下デモ・ボード)のマニュアル、回路図などの資料を使用します。以下の参考文献の最新版をWebサイトから入手してあらかじめお手元にご用意ください。



入出力装置の使い方

 マイコン・システムとして使う入出力装置は多種多様で、その特性や使い方も実にさまざまです。これらを扱うCPUからは、アドレス・バスやデータ・バス、コントロール・バスなどへの信号が出ているのが普通です。しかし、CPUは直接、入出力装置を制御することはできません。そのため、CPUと入出力装置との橋渡し役を担う“周辺I/F”が必要となります。周辺I/Fには使用できる入出力装置・機能によっていろいろな種類があります。

 周辺I/Fには、「レジスタ」と呼ばれる回路が内蔵されています。レジスタは、周辺I/Fを使うための“操作盤”のようなものです。入出力装置はこのレジスタを操作することによって扱われます。周辺I/Fのレジスタは、CPUからアクセスできるメモリ領域やI/O領域にマッピングされています。ちなみに、S08 CPUのアーキテクチャは、メモリ領域にI/Oもマッピングする「メモリ・マップドI/O方式」を採用しています。

 マイコンは、ROM/RAMなどのメモリと主要な周辺I/FをCPUコアと同じチップに内蔵しています。そのため、一般的にはアドレス・バスやデータ・バスなどのピンはありません。ほとんどのピンが周辺I/Fで使う機能ピンです。つまり、ピン数は比較的少なく、パッケージがコンパクトになります。

 また、同じCPUコアを使っていても、実際に開発する製品によってプログラムが必要とするメモリ・サイズや、周辺I/Fの種類などは異なります。そのため、マイコンには多くの種類があります。

 ここで、本連載のデモ・ボードに搭載されているマイコン「S08QE128」の構成について見てみましょう(図1)。

S08QEファミリの構成 図1 S08QEファミリの構成

 QE128の場合、メモリはFlashが128kbytes、SRAMが8kbytesです。そして、図1の Peripheralsの部分が周辺I/Fモジュールです。このように、小さなマイコンとはいえ、さまざまなものが内蔵されています。何だかすごいことができそうですね。

 当然、“これらのモジュールをすべて使うことができる”とお思いでしょうが、実際はそうではありません。よく考えてみてください。デモ・ボードで使っているQE128は64ピンです。モジュールの数に対して、実際のピンの数が少な過ぎると思いませんか? そうです。実は、1つのピンを複数のモジュールで共用しているのです。

 図2を見ると、1つのピンに対して複数の信号名が書かれているのが分かると思います(例:PTA7/TPM2CH2/ADP9)。つまり、製品のハードウェアを設計するときは、どのピンをどの機能で使うかなど、注意する必要があります。

QE128 64ピン・パッケージ 図2 QE128 64ピン・パッケージ ※MC9S08QE128/96/64リファレンス・マニュアル(27ページ)より

GPIOの使い方

 今回は最も基本的な汎用I/O(GPIO)を使ってみます。マイコンでは通常、パラレルI/Oポートとして用意されており、QE128の場合は9つあります。また、I/Oピンの本数はマイコンのパッケージによって異なり、今回のデモ・ボードに使われる64ピンLQFPパッケージの場合は54本です。

 パラレルI/Oポートは、複数のGPIOをまとめて扱います。ポートによって使える機能に違いがありますが、主に次の3種類のレジスタを使います(表1)。

PTxD データ 外部装置とのデータのやりとりに使用
PTxDD データ方向 入力/出力の方向を指定
PTxPE 内部プルアップ・イネーブル 内部プルアップ・デバイスの有効/無効を指定
表1 主に使用される3種類のレジスタ

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.