PICマイコンを使ってポイントマシンを動作させたり信号の点灯制御を行うNゲージレイアウトを製作中。複数のPICマイコンはI2C通信を使ってRaspberry Pi3で制御するつもり。だが、電圧レベル変換モジュールでドツボにハマってしまった。
PICkit 3で書き込み時の電力不足
PICマイコンのプログラムを開発中。
MPLAB X IDEでコーディング、コンパイルし、MPLAB X IDEやMPLAB X IPEでPICkit 3を使ってPICマイコンに書き込むという流れ。
MPLAB X IDE/IPEをV5.25にアップデートしたらPICkit 3接続時に電力不足のエラーがでるようになった。
これまで使っていたバージョンは忘れたが、そんなに古いバージョンは使用していなかった。
(5以上にはしていたはず。)
今回ターゲットにしているのはPIC16F886で、秋月電子で買った「Pickit対応ICPS書き込みアダプターキット」を使用してプログラムを書き込んでいた。
I2Cのテストプログラムを作っており、ターゲットの回路は現時点では確認用のLEDが1個のみ。
これまではターゲット回路の電源を入れずにPickit 3にUSBからの電力供給という設定でも書き込みはできていた。
しかし、MPLAB X IDE/IPEをバージョンアップしてからは同じ設定なのにエラーになるようになった。
3台のPCで試したが、どのPCでもダメ。
昔ながらのソフト「PicKit3 Programmer」を使うとどのPCからでもUSBからの電力供給で書き込みはできた。
MPLAB X IDE/IPEでの電圧チェックがシビアになったのか?
これは、MPLAB X IPEのPower Settingsの画面。
Pickit3から5Vを供給する設定。
MPLAB X IPEのエラーの内容はこんな感じ。
MPLAB X IDEでも同じエラーになる。
メッセージとしては、次のような内容が出力されている。
Connecting to MPLAB PICkit 3…
Currently loaded firmware on PICkit 3 Firmware Suite Version…..01.56.00
Firmware type…………..Midrange
The target circuit may require more power than the debug tool can provide. An external power supply might be necessary. Connection Failed.
また、こんな感じのメッセージも。
Connecting to MPLAB PICkit 3…
Currently loaded firmware on PICkit 3
Firmware Suite Version…..01.56.00
Firmware type…………..Midrange
PICkit 3 is trying to supply 5.000000 volts from the USB port, but the target VDD is measured to be 4.625000 volts. This could be due to the USB port power capabilities or the target circuitry affecting the measured VDD.
The target circuit may require more power than the debug tool can provide. An external power supply might be necessary. Connection Failed.
google君は
と翻訳してくれた。
まあ、USBポートからは4.625000ボルトしか出てないよということらしい。
ひとまずの対応としては
USBから供給する電源の電圧が足りないのなら、ターゲットのボードの電源を入れることで解決。
ただ、現時点では単純なテストをしているだけのプログラムなので、PICマイコンへのプログラムの書き込みに使用するMCLR、ICPSCLK、ICPSDATのどのピンにも何ら接続はしていない。
しかし、この先これらのピンを他の用途で使用し始めたらターゲットボードを使っての書き込みができなくなる可能性も。
これはダメじゃ。
次の対策としては
PC本体のUSBポートからの電圧が足りないのであれば・・
市販されているUSBハブはPCからの電力供給のみのバスパワー対応の他に、USBハブに電源アダプターがついたセルフパワーのものがある。
これで試したところ、無事書き込むことができた。
メデタシ、メデタシ。
MPLAB X IDE/IPEの電力チェックの部分がバージョンアップでシビアになったのではないかと思う反面、これまでたまたま動いていたのか?という疑問もないではないが。根本的な原因は不明。
(以前使っていたところと同じUSBポートを使って試したので、ポートの違いによる電圧の差異の影響ではないと思う。)
だが、電源アダプター付きUSBハブは邪魔
PICマイコンに書き込む都度USBハブを繋ぐのは面倒だし、邪魔。
PC内部の電圧はオプションボードや接続しているハードディスクの数なんかによっても違っているんだろうなぁと思いながらも、アタイには、PCの電源は12Vと5Vという固定観念がある。
また、Pickit3への電力供給もPICマイコンの種類によって、律儀に3.3Vか5Vのどちらかとキッチリした値に設定してきた。
で、ふと思った。
そういえば、今回使用しているPICマイコンのPIC16F886は、2.0Vから5.5Vのワイドレンジ。
(・・書き込むときの最低電圧は不明だが。)
MPLAB IPEは「ターゲットVDDは4.625000ボルトと測定されています。」というメッセージを出している。
4.625000ボルトが測定されているんなら、Pickitに供給する電圧をそれ以下に指定すればいいんじゃねぇ?
ということで、4.625ボルトにしてみた。
すると、エラーは表示されなくなり、書き込みもちゃんとできた。
今度こそメデタシ、メデタシ。
・・(あまりないとは思うが)例えば5.0Vから5.5Vを必要とするマイコンだったら・・・
セルフパワーのUSBハブの使用ですな。