2021年05月29日

PIC32MX2XX RB5ポート注意点

先日、PIC32MX2XXシリーズを使用していて、RB5ポートの出力が意図通りに動かない問題に遭遇しました。今回はその原因と解決方法を紹介したいと思います。PIC32MX250F128BをターゲットにMPLAB X v5.45+Harmony3+XC32 v2.50を使用しています。


RB5ポートをHarmony3のPin SettingsでFunctionをGPIO、DirectionをOutに設定し、コード上でONにしましたが、RB5のみ2.2V付近の中途半端な電圧が出力されるのみで意図したIO変化をさせることができませんでした。

PinSetting.jpg


一般的なPICのGPIOポート設定でよくあるミスとして
・アナログ入力がONになっている(ANSELXが0でない)
・JTAGポートがONになっている(JTAGEN=ON)
・入力専用のポートだった
・OpenDrain設定だった(ODCXが0でない) or OpenDrain専用ポートだった
ということが多々あります。

今回は上記でもなく、MPUのエラッタと思い調べてみましたが、「I2C2モジュールが有効の場合にRB5、RB6がうまく動かない」というエラー以外はなく、I2C2を使用していないため、エラッタでもなさそうです。


データシートのピンアサインを調べてみるとRB5はUSBID用のポートとなっており、USBID関連の設定を見るとHarmony3のデフォルト設定が
USB USBID Selection bitがONとなっており、USBを使用していないにも関わらずデフォルト設定がONになっていることが分かりました。USB USBID Selection bit(FUSBIDIO) をOFFに設定すると意図通りにRB5のON、OFFができるようになりました。


USB_ID_DISABLE.jpg

USB機能があるPIC32MX2XXシリーズ固有の問題ですが、初期設定でUSB USBID Selection bitがUSB側になっているのは不親切だと思いました。ポートが意図した動作をしない場合はポートに割り当て可能な機能について設定状況を一折調べることが大切です。特にUSBやJTAG系の設定はGPIO設定とは設定項目が異なるため、見落としがちなので注意が必要です。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。