RA4の罠

初心者が必ず落ちる 代表的な罠の一つです。 下の回路図を見てみましょう

この回路において、RA0, RA1, RA2, RA3, RA4をそれぞれ"1"とすると、当然全てのLEDが点灯すると思います。
誰だってそう思います。僕もそう思います。 しかし、現実は無情。LED4だけが点灯しません・・・

それはなぜか??
実はPIC16Fシリーズにおいて、Microchipは我々をハメるため、 RA4だけオープンドレイン出力にしているのです。
オープンドレイン出力とはなんでしょう? 下の回路図で説明します。

左の図は普通のI/Oピン。 マイコンはRA0に接続されたスイッチを制御します。 スイッチが"1"だとRA0ピン電圧は5Vになり、スイッチが"0"だとRA0ピンの電圧は0Vになります。 これが当たり前ですよね。
右の図がオープンドレイン出力のI/Oピン。 マイコンはRA4に接続されたスイッチを制御します。 このスイッチはRA4ピンをGNDに接続するか否かを設定するだけで、RA4ピンそれ自身は電圧を出力しません。 なので、スイッチを"1"にしようが"0"にしようが、RA4ピンの電圧は0Vです。

ではどうすればいいのでしょう?
答えは、LED点灯を"負論理"にすることです。 下の図を見てください。

このようにすれば、通常のI/Oピンも、オープンドレイン出力のI/Oピンも全く同じ回路で、 共にスイッチが"0"の時にLEDが点灯し、スイッチが"1"の時にLEDが消灯します。

正論理でも下の図のようにすればいいのではないか?という意見もあると思います。

たしかにこれで正論理が成立します。 しかし、この回路にはPIC特有の重大な罠があります・・・
実はこれこそが、Microchipの仕組んだ 真の罠 なのです!
(I/Oピン書き換えの罠に続く)

Top