【cartreader】cartreaderのつくりかた――Step:3 スーパーファミコンの特殊チップ吸い出し用に、snesCICをPICマイコン(PIC12F635T-I/SN)に書き込む

電子工作
この記事は約10分で読めます。

ROM吸い出しの鬼門、特殊チップROM

吸い出しでは右に出るものがいないであろう、cartreaderの製作連載の第3回目。

前回は電子部品類を注文しましたが、今回はcartreaderづくりで一番の難所と言っても良い、特殊チップ搭載タイトルの吸い出しのためのPICマイコンフラッシュを行います。

前回はこちら↓

PICはArduinoなどと比べ、低レイヤな方だと思うのですが、低レイヤなだけに現在のモダンなWebやプログラミングの感覚が通じないところがあります。

普通、ソフトウェアは新しければ新しいほど良いですが、マイコンなどでは必ずしもそうとは限りません。新しいものが完全上位互換とは限らないので、組み合わせが良くないと古いソフトを使う必要があったりもします。
今回、私も低レイヤの洗礼を受け、なぜか動かないと何時間も悩むことになりました…

この記事はVer.3のハードウェアで制作しています。現在最新のハードウェアはV4です(タッチの差で古いものを作ってしまいました)。

2022/01/05追記:また、SA1チップ搭載カートリッジの吸い出しに、必ずしもPICマイコンは必要ではなく、むしろPICを使わずにPCB上のPICの部分の6と7をショートさせるほうが、高確率でSA1チップに対応できるとのcartreader作者sanni氏からの情報もあります。そのため、現在は必ずしも必要ではないようです(参考: https://blog.jllab.info/product/cartreader-kai-cartridge-reader-alter/ JLさんありがとうございます!)。

PICkit3のパチもん(?)をAliExpressで購入

PICKit2 PICKIT3 PICKit3.5 Programmer + PIC ICD2 PICKit 2 PICKIT 3 PICKIT 3.5 Programming Adapter Universal Programmer Seat|Integrated Circuits| – AliExpress – https://www.aliexpress.com/item/1005002857278350.html

AliExpressでPICkit3…の恐らく偽物を買います。ロゴが入っていないので多分偽物なのですが、ロゴ無しだし商標権侵害とかではないと思います(適当)。

静電気を軽減する袋に入って届きました。今回購入したショップのページには、PICkit2,3,3.5と、それぞれに今回使うようなBurn Write Block(変換アダプタ)が追加されたものの計6種類があります。

特に理由がなければ、アダプターも一緒に買っておくと安心です。

今回はPICkit3+アダプタを選びました。前述の通り、新しければ新しいほど良いとは限らないので、古すぎず新しすぎず、は3だと判断しました。

ちなみに今回購入したPICマイコンは、前回も書きましたがPIC12F635です。公式にはPIC12F629と書かれているのですが、秋月電子になく、他のところも日本で買えるところは大抵見て回ったのですが、どこも在庫切れでした。入荷予定があっても、数ヶ月先なんてざらだったので、動く確証はないものの、仕様は似ているPIC12F635を選びました。これも半導体不足の影響なのでしょうか…

PICkit3から給電できるようにする

0-4.PICkit3クローン_改良有り | とぅ~しゃんち
「MPLAB Snap」が値上がりしていました。 ここのところPICの書き込みは「MPLAB Snap」を使っていますが、何気なく秋月さんの価格を見て見ると¥2,400になっていました。送料込みでほぼ¥3,000になります。 私が購入した時は¥2,000以下でしたので、結構値上がりしたことになります。「MPLAB Sn...

こちらのサイトによると、このパチもんPICkit3は、一部部品を実装していない場所があるそうです。PICkit3は工具不要で簡単に外装が外せるので確認すると、確かにところどころ実装されていない場所がありました。

これだけならいいのですが、1つ問題があり、必要なときにも低電圧のままになってしまい、書き込めなくなる恐れがあるというのです。

しかし、これには解決策があり、「74LVC1T45のPin6に接続されている抵抗100Ωをショートすることになっています。」とのこと。

これは、具体的にはR26、R43、R45です。しかし前述の通り、未実装部品が存在するため、実際にショートさせるのはR26とR43のみです。

SOP to DIPモジュールを使って、表面実装用のPIC12F635をアダプタで使えるように変換します。PICの丸印部分が、画面右下になります(分かりづらくてすみません)。

また、PICkit3クローン本体とアダプタを接続するとき、PICkit3側は一本差し口が多いのですが、PICkit3の白い三角に近い方に挿します。

青いアダプタ(ソケット)の、3Mとある方から数えて11番目に入れるそうです(これ分かりませんでした。ありがとうございます)。

PIC12F635にフラッシュ(焼く)!

さて、いよいよPICにフラッシュ(記録)します。

まずMPLAB X IDEをダウンロードしてインストールします。かなりストレージを食いますし、今回は8bitのPICマイコンしか使わないので、それ以上のビット数のものなどはチェックを外してOKです。インストールは同意して待つだけです(割と時間はかかります)。

インストール後、PCのUSBポートにケーブルを繋ぐと、Windows10では自動で認識してくれました(他は未確認)。

PICに書き込むプログラムは、cartreaderのリポジトリにはなく、こちらにあります(全く違うプロジェクトなのでしょうかね)。.zipか何かでクローンしておきましょう。

PICが繋がらない!!

何度やっても、PICが内部的に繋がりません。ソフトは最新バージョンだし、挿す位置も大丈夫、ピンヘッダもOK…

行き詰まってしまい、何時間も悩んでいましたが、Twitterで心優しい方からリプを頂くことができました(青いアダプタに挿す場所を教えていただいた方と同じ方ですが、時系列的にはこちらが先でした)。

その方によると、PICkit3のファームウェアが古いと認識してくれないらしく、ファームウェアの更新をしてみてはどうかと提案が。

「PICkit3の」ファームウェアというのは割と盲点でした。PC側ばかり気にしていて、PICkit3のファームウェアを考えつかなかったのです。

ただ、普通はMPLAB X IDEが自動で更新してくれるはずなのです。MPLAB X IDEをインストールすると同時に入るMPLAB X IPEというソフトにも、「Auto Download Firmware」という項目があって、最初からそれにチェックが入ってますしね。

恐らく、自動でファームウェアが新しくならないのは、インストール後に「このソフトウェアに〇〇で他のネットワーク上のデバイスから認識できるようにしますか?(うろ覚え)」「このアプリのいくつかの機能がWindows Defenderファイアウォールでブロックされています」みたいなダイアログが出てきたはずで(私は目にしました)、それをなんとなくで拒否すると、自動でアップデートされないのかな、と推測しています。(本当にご助言ありがとうございました…!)

PICkit3のファームウェアを手動で当てる

さて、肝心のどうすれば手動でファームウェアを当てるかですが、以下のように行います。

まずフラッシュする.hexファイル(snescic-lock-resync.hex)を使って、プロジェクトをMPLAB X IDEで作ります。画像のように、File→New Projectと進み、使うPICの種類、ハードウェアツール、プロジェクト名、プロジェクトの保存場所などを決めます(同名で作ろうとしているから怒られていますが本来はこんなことありません)。文字のエンコーディングはとりあえずUTF-8にしました。

次に、手動でPICkit3のファームウェアを当てます。作ったプロジェクトをOpen Projectで開き、Projectsの中にあるsnescic-lock-resyncを右クリック→(一番下の)Propertiesをクリック。

プロパティが開くので、CategoriesのPICkit3をクリックします。右側にOption Categoriesがあるので、そこでFirmwareをクリックし、

Use Latest Firmwareにデフォルトでチェックが入っているはずなので、チェックを外します。

Firmware Fileをクリックし、ローカルからファームウェアのファイルを選択します。

ついでに、Option CategoriesからPowerを選び、Power circuit from PICkit3にチェックを入れます。これにより、PICに別途電源を供給する必要がなくなります。

もしこの後書き込みで「The target circuit may require more power than the debug tool can provide. An external power supply might be necessary.」のようなエラーが出た場合は、電圧が低いため、Voltage Levelを上げると解決するかもしれません。

あとは元の画面に戻って、Make and Program Device Main Projectをクリックすれば、ファームウェアの問題を解決してsnesCICにフラッシュができます。お疲れさまでした。
USBメモリなどの機器とは違い、使っていないからといって唐突に抜いたりするとデータ破損の可能性もあるので(USBメモリも0ではないですが)、File→Exitで終了くらいはしたほうが良いかもしれません。

無事にフラッシュできましたでしょうか(フラッシュできたと思っていますが、まだ完成していないので確認はできていません…)。
山場は超えたので、あとはハンダ付けを頑張るだけです!次回もまたご覧下さい(パターンを剥がしてしまったのでパーツを再注文しています…)。

参考文献

0-4.PICkit3クローン_改良有り – https://porco.team-7.net/kousakunoheya/dennshi-dennkikei/0-4%ef%bc%8epickit3%e3%82%af%e3%83%ad%e3%83%bc%e3%83%b3_%e6%94%b9%e8%89%af%e6%9c%89%e3%82%8a/

冬休みの自由研究:cartreaderを作る https://zenn.dev/sasaplus1/scraps/121bb45b6ec08d#fnref1

PICkit3の購入元など、こちらのサイトを大いに参考にさせて頂きました。ありがとうございます。

病気療養中のガジェットオタクです。PC、スマホからオーディオ、家電まで、デジモノ・IT系中心に自分の興味のあるものならなんでも記事にします。誤字脱字など、ミスの報告歓迎です。
TwitterのDMに連絡頂けると助かりますが、当ブログのお問い合わせフォームや、メールでも構いません。レビュー依頼など、各種ご依頼承っています。

でじぃをフォローする
電子工作
スポンサーリンク
でじぃをフォローする
Digital’ It!
タイトルとURLをコピーしました