以下の挙動になる。
Hi にした時 | Low にした時 | |
普通のポート | Hi | Low |
オープンドレイン出力(ポートはオープン) | Z | Low |
オープンドレイン出力(ポートはプルアップ) | Hi | Low |
内部の仕組みはともかく、簡単に考えるとオープンドレイン出力はHi時はハイインピーダンス。Low時はGNDに接続されると考えればよい。
Hi時はハイインピーダンスになるだけなので、もしポートに別のオープンドレイン出力が繋がれていてそれがLowだったとしても信号線は問題なくLowとなる。普通のGPIOでこれが起こると大電流が流れてしまう。I2Cはこの特性を利用している(らしい)。(CANのリセッシブも似たような挙動だ。)
よくやってしまう間違いが普通のGPIOだと思ってHiにしてもHiにならないので困るという事故である。