IOポートが足りなくなった時は

概要

マイコンにも様々な種類がありますが、あまり複雑・高速でない処理ならば小規模なマイコンでよい時も結構あると思います。
しかし、小規模なマイコンにありがちな問題として、IOポートが少ないということが挙げられるでしょう。
そんなIOポート不足を解消する術をいくつか紹介したいと思います。
また、個人的によくその用途で使用するICを例として挙げておきます。

出力ポートを増やす

3-8デコーダを使用する

まず、簡単に出力ポートを増やす方法として思いつくのがこれでしょう。
3-8デコーダを使用すると3本のIOから8段階の出力を得ることができます。
原理としては、3本のセレクト入力によって、Lレベル出力にする番号を指定するといったものです。
要は、同時に2箇所以上をLレベルにはできなくなる代わりに、出力ポートが増やせるようになるということです。
欠点として、上記で挙げた2箇所以上を同時に出力できなくなるため、必ず同時出力を行わない場合に使用できます。

代表的なICとしては74HC138です。これは3-8デコーダに、イネーブル入力が3つ付いたICです。
千石などで安く購入することができます。

シフトレジスタを使用する

上記の3-8デコーダでは同時に出力できないという欠点が存在しました。
ですが、シフトレジスタを使用することで上記の欠点を解決することが可能です。
シフトレジスタは、クロックに合わせてデータをシリアルで出力することによって、
接続先のICでパラレルに変換して出力することが可能です。
シリアルで出力するので、もちろんすべてのビットを自由にH・Lに変えることが可能です。
欠点としては、シリアルで出力するので、出力するまでに多少の時間がどうしてもかかることです。

個人的によく使用するのは、74HC595です。
このICは、上記のシフトレジスタに出力許可信号と、オーバーした分の信号を出力する端子があるので、
ICを直列につないでいけば理論上無限に出力ポートを増やすことが可能になります。
ただし、もちろん数が増えるほど出力の遅延が関係してきますので注意が必要です。

シリアル通信でマイコン同士を接続する

上記と比較すると少しレベルが上がります。
シリアル通信でマイコンを接続してスレーブ側のIOを使用することにより、出力ポートを増やす方法です。
欠点は、シフトレジスタと同じで出力に時間がかかることや、スレーブ側のマイコンのプログラムを書く必要があること
また、スレーブマイコンもプログラムで処理するので、バグの原因が増えるということが挙げられます。
なので、これから下記に示す利点が特に必要ない場合は素直にシフトレジスタを使用するのがいいでしょう。
利点としては、増設するのがマイコンなので、出力ポートと限らず、入力ポート、アナログ入力、アナログ出力、シリアルポートなど、
マイコンにある機能を増設することが可能になります。ただし、通信などのロスで遅延が入ることを念頭に置く必要があります。
また、接続のシリアル通信を自由に変更できることがあります。大抵のマイコンでしたら、SPI、I2C、UARTあたりが使用できると思います。

マイコンをIOの多いマイコンに変える

これは、上記とは違い、使用するマイコンそのものを見直すという思い切った方法です。
こんなの有りか!?といわれればそこまでですが、企画段階でポート不足などに陥った場合には十分可能な方法です。
欠点としては、もちろんマイコンが変わるわけですから、計画に狂いが生じてくることが挙げられます。
なので、この方法はその回路を製作する上で早い段階であればあるほど実現しやすくなってくるでしょう。
利点は、もちろん上記のように別のICを使用していないので時間のロスや制約が無いことです。
足りなくなったときの方法としては邪道かも知れませんが、使用方法によっては案外いい方法かもしれません。

バスを出力して、IOポートを増設する

今までの中で一番難易度が高い方法です。
一般に使う用途では、まずこの方法を使うことは無いでしょう。
ですが、製品などの用途ではバスを使っていろいろな周辺機器を増設する場合があります。
欠点としては、バスを出す時点でそれなりのIO数・バスコントローラを持つマイコンであることが必要となります。
また、IOポートを自分で設計し、アドレスを割り振るなどの作業が必要となり、かなりの知識が必要です。
利点としては、バスを使用しますので上記の上から3つの方法と比べると高速なIOを増設できます。
更に、バスなので規格さえ合わせれば自由に周辺機器を追加することが可能です。

履歴

[09/10/27] : 5項目掲載開始

inserted by FC2 system