CN機能無効でもプルアップだけ利用できるか?

PIC24FJ64GA002を使用して、PIC24Fの機能確認用テスト・ボードを作成している。正確には製作途中だが、ユニバーサル基板に半田付けしていることもあり、すべて実装する前に少しずつ動作確認している。機能は、

  • 3端子レギュレータで電源電圧調整(BOR(Brown Out Reset)動作確認用)
  • 4連DIPスイッチ(I/Oの入力動作確認)
  • LEDx4(I/Oの出力動作確認)
  • CTS/RTS付きRS232C通信(UART動作確認)

UART周りは、RS232Cドライバのコンデンサが多いので後回しで未実装。

I/O入力確認用DIPスイッチなんですが、抵抗を使ってプルアップし、DIPスイッチがONになったときGNDへ落とし、OFFならプルアップでVDDレベルが供給される、というのが通常の回路。
ところでPIC24FにはCN(Input Change Notification)という機能があって、ピンの入力に変化があったとき割込を発生する。このCNピンにはプルアップ機能(選択可能)があり、外付けのプルアップ抵抗が不要になる。
PIC24なら(たぶん)すべてのI/Oポートに備わっているようで、先のDIPスイッチのプルアップ抵抗も不要に出来るのではと考えた。(追記 2009/06/01:44pin製品ではCN機能無しのポート端子もある。)

「考えた」と書いたのには理由があって、通常のI/OポートとCN機能の関連がドキュメントに書かれていないからだ。CN機能の説明はI/Oポートで一緒に説明されているが、ポートのブロック図には記載がない。PIC24Fファミリ・リファレンス・マニュアルには「入力変化通知 ブロック図」があるが、今度はI/Oポートとの接続が描かれていない。
こういうポートのブロック図は、ルネサスのH8やSHのマニュアルのように全ポート毎のブロック図を掲載して欲しいものだ。下手な説明よりも一目瞭然だから。

話を戻すと、心配な点は「I/Oポートとして使用するとき、CN機能OFFでもプルアップを有効に出来るのか?」ということである。
他の記事にも書いたけど、Microchip社のドキュメントにはあまり期待していないので、実験して確認してみた。

<<条件>>

  1. DIPスイッチの一端をGNDに接続。もう一端をI/Oポートに直結。
  2. CN機能はOFF。
  3. I/Oポートの方向はinput。
  4. プルアップは有効(ただし無効でも確認)。
  5. Vddは3.30[V]。

<<結果>>

  • CNが無効でもプルアップは有効である。
  • プルアップを無効にすると、当然DIPスイッチを正常に読めない(DIPスイッチの状態に関わらず、常に0が読める)。
  • プルアップ有効でDIPスイッチをOFFしたときの端子電圧は2.50[V]。

PIC24FJ64GA004 Data Sheetに「the pin pulls up to VDD-0.7V (typical)」とあるから、3.3-0.7=2.6[V]であり妥当な値だ。
またDC特性によるとプルアップ電流(ICNPU)は50〜400[μA]なので、そう多くは流せないので注意。