2024年12月8日
PICマイコン (PIC12F1822) にプログラムを書き込むために、市販のデバッガMPLAB Snapとつないで使える、書き込み用の基板を作ってみました。MPLAB X IDEからプログラムをマイコンに書き込めます。
ひとつ前の記事では、MPLAB X IDEでアセンブラpic-asを使ってプログラムを開発する方法を説明しましたが、ここでは完成したプログラムをPICマイコンに書き込むための基板を作ったことについて、紹介します。
マイコンのプログラムは、ビルドするとHEXファイルとなりますが、実際にマイコンで実行するためには、HEXファイルに記録されているデータをマイコンのチップに内蔵された不揮発性メモリに書き込む必要があります。
マイコンにプログラムを書き込む装置を「プログラマ」と呼び、マイコンにプログラムを書き込むことを「プログラミング」と呼ぶことが多いです。
プログラマを一から作るのは難しいので、市販されているデバッガ「MPLAB Snap」を使います。MPLAB Snapは、ネット通販で3000円弱しました。最近は品不足で、値段が上がっている様子があります。
MPLAB Snapの箱
MPLAB Snapは、箱を開けると以下のような一枚の基板がむき出しで入っています。
MPLAB Snapの基板
micro USBの端子があり、パソコンとUSBで接続できます。ただし、USBケーブルは付属していないので、別途用意する必要があります。
PICマイコンとの接続は、PICマイコン書込用の基板を、MPLAB Snapのピンソケットにつなぐことで行います。
書き込み用の基板は、MPLAB Snapには付属していないので、自分で用意する必要があります。
なお、MPLAB Snapでは、PICマイコンにプログラムを書き込む「プログラミング」と、書き込んだプログラムを少しずつ実行しながらマイコンの状態をパソコン側で把握する「デバッグ」の両方ができる装置です。今回作った「地下鉄ブザー」では、デバッグに必要なピンを他の用途で使ってしまっているため、デバッグしながら実行することはできません。従って、マイコンにプログラムを書き込むための基板を、地下鉄ブザーの基板とは別に用意することにします。
どのような回路の基板を作ればマイコンに書込ができるかは、MPLAB Snapのドキュメントに記載があります。
今回は、8ピンのPIC12F1822への書込を行うため、以下の回路図で書込用の基板を作成することにしました。
PIC12F1822書き込み用の基板の回路図
MPLAB Snapの8ピンコネクタを、PICマイコンのピンとつなぐ回路となっています。
RA1とRA0は、マイコンにプログラムを書き込むときのシリアル通信のインターフェースとして使えるようになっています。
MCLRピンは、書き込みを行っている間は、MPLAB SnapによりLowレベルとなります。MCLRピンをLowレベルとして書き込みを行う機能を、Low Voltage Programming (LVP)と呼びます。MPLAB Snapは、LVPに対応したマイコンのみ書き込み可能です。PIC12F1822はLVPに対応しているので、MPLAB Snapと上記の回路で書き込みが可能です。
MCLRピンは電源電圧で弱くプルアップし、不意にリセット状態にならないようにしています。
書込が行われるマイコンが消費する電流は、MPLAB Snapからは供給されません。基板側で、単3形電池2本を使い、約3Vを供給することにします。ちなみに、PIC12F1822はプログラムの実行は1.8Vの電源電圧で可能ですが、書込や消去を行う場合は、2.7V以上の電源電圧が必要となる場面があるため、ニッケル水素電池(2本で2.4V程度)ではなく、アルカリ乾電池(2本で3V程度)を使ったほうが無難です。
部品は、秋月電子通商の片面ユニバーサル基板(Cタイプ)に、以下の配置で組み立てることにしました。
部品の配置図
右側のピンヘッダーは、MPLAB Snapを接続するためのものです。
配線は、なるべくシンプルになるように考えました。
頑張って組み立てたところ、以下のように組み上がりました。
PIC12F1822書き込み用の基板が完成した様子
赤と黒のリード線の先には、単3形電池2本の電池ボックスがあります。
8ピンのICソケットにマイコンを載せます。こだわれば、ゼロプレッシャーソケットを使うことで、マイコンを着脱するときに、ピンにストレスを加えないようにできます。今回は、簡単に組み立てられることを重視したため、簡易的な回路となりました。
また、ピンの配置が同じでLVPに対応したマイコンであれば、他の型番のマイコンでもこの基板で書き込めるものがあります。
例えばPIC16F1823は、ピン数が14あるため8ピンのソケットには合いませんが、1番ピンを合わせて部分的に挿入することで、書き込めるはずです。
ピン配置が異なるマイコンを差し込んだり、差し込む向きを間違えたり、LVPに対応しないマイコンを差し込んだりすると、マイコンを破損する可能性があるため注意が必要です。
できあがった基板を使い、実際にPIC12F1822に書き込んでみました。以下の順序で接続します。
基板にPIC12F1822を搭載します。マイコンの足を傷めないように注意します。
MPLAB Snapとピンヘッダーを接続します。接続の向きを間違えないように注意します。
MPLAB SnapをUSBケーブルでパソコンと接続します。
基板に単3形電池2本をつないで、電源を入れます。
接続したときの様子を以下に示します。なお、写真の状態からは、さらにUSBケーブルをつなぐ必要があります。
基板をMPLAB Snapと接続した様子
接続ができたら、パソコンのMPLAB X IDEの画面で、プロジェクトのプロパティを開きます。
ここで、書き込み器として、MPLAB Snapを選択します。[Connected Hardware Tool:]の欄から、 Snap を選択して、[OK]を選択します。
プロジェクトのプロパティでMPLAB Snapを選択
MPLAB X IDEのメニューから[Production]→[Make and Program Device Main Project]を選択すると、ソースコードのビルドと、マイコンへの書き込みが、連続して実行されます。
マイコンへ書き込むときのPCの操作
正常に実行されれば完了の画面となりますが、初回実行時は書き込みが始まるまでにかなり待たされることがあります。
書き込みが無事に終わったら、今度はマイコンの取り外しを行います。以下の手順で進めるとよいでしょう。
基板から単3形電池2本を外します。
MPLAB SnapにつながっているUSBケーブルを、パソコンから取り外します。
基板からPIC12F1822を取り外します。
取り外したマイコンを、地下鉄ブザーなどのマイコンを実行したい基板にセットし、電源を入れると、書き込まれたプログラムが実行されます。
後は、意図したとおりに実行できるようになるまで、マイコンを地下鉄ブザーの基板に載せたり、書き込み用の基板に載せたりを繰り返して、デバッグを進めていくことになります。
うまく動くようになれば、完成です。
マイコンは、一度プログラムを書き込んでしまえば、後はパソコンがなくても動きます。電源を入れるだけですぐに動作するプログラムを、パソコンとは独立して動かすことができる点で、マイコンのプログラミングはパソコンにはない魅力を持っています。
もしも興味があれば、実際に遊んでみると、面白いと思います。
次の記事では、PICマイコンの書き込みを、PICKIT3という市販のデバッガを使って行う方法を紹介します。こちらでも、マイコン書き込み用の基板を自作しました。
手前の記事:地下鉄ブザーを作る--MPLAB X IDEによるアセンブラ開発環境の使い方
製作・著作:杉原 俊雄(すぎはら としお)
(c)2024 Toshio Sugihara. All rights reserved.