32ピンQFPのAtmega328P-AUに予めプログラムを書き込むために、0.8mmピッチ/32ピンQFPのソケットを使って書き込み基板を作ることにしました。
とりあえず一つあれば良いのでユニバーサル基板に作ります。
仕様という程ではないですが
基板サイズは95 x 72mmです。材質は両面スルーホールガラエポ基板を使いましたが、はんだ面でハンダブリッジをすると部品面側にはんだが流れてくるので片面ガラスコンポジット基板の方が配線しやすかったと思います。
ソケットはaitendoで購入した 「ソケット変換アダプタQFP0832D32A」 を使います。
書き込み装置はUSBasp AVRライターを使います。Arduinoで使うにはは10ピンから6ピンへの変換基板を使ってICSPコネクタに接続しますが、今回は必要ないので10ピンのボックスヘッダを実装します。
書き込むチップが複数個あった場合、電源が入っている状態でICを取り替えるのはよろしくないので、その度にUSBasp AVRライターを抜き差しすることになります。これは面倒なので電源スイッチ(とLED)をつけます。ICを装着するときに電源をオフするようにします。書き込みをしている時以外、信号はLowレベルなので直接接続しても問題ないでしょう。
回路図
手書きの回路図です。
もともとはAtmega328P-AU用(上半分の回路)で作っていましたが、ついでということで28ピンのゼロプレッシャーICソケット(Atmega328P-PU用)と6ピンのICSP用のコネクタも追加しました(下半分の回路)。
完成版
配線後の完成版です。
32ピンQFPのICソケット基板と28ピンのゼロプレッシャーICソケットは直接はんだ付けをするのではなくピンソケットに挿入するようにしています。32ピンQFPのICソケット基板は足が長いので問題ないですが、28ピンのゼロプレッシャーICソケットは基本的には基板に直接はんだ付けするタイプな為、足が短く抜けやすいのでちょっと不安ではあります。
これが、ソケットを載せた画像です。
案の定、28ピンのゼロプレッシャーICソケットのレバーを倒す時にはソケットを手で押さえながらする必要があります。直接はんだ付けした方が良かったですね。
ブートローダーの書き込み
ICソケットを開けてAtmega328P-AUをセットします。左上が1番ピンになりますので間違えないようにして蓋を閉めて電源スイッチをオン(右側に倒す)します。
Arduino IDEを起動し、「ツール」>「ボード:」> [Arduino UNO]を選択
「ツール」>「書込装置:」> [USBasp] を選択
「ツール」> [ブートローダを書き込む] をクリックすると書き込みが開始されます。
「ブートローダーの書き込みが完了しました」のメッセージがでて書き込みが終了です。
電源スイッチをオフ(左側に倒す)にしてICを取り出します。
28ピンゼロプレッシャーICソケットに取り付けたAtmega328P-PU も問題なく書き込みができました。
さて、USBasp 基板がPCに接続されていることを示すLEDがあった方が良いかもしれません。後で追加するとします。
コメント
ATmega328P-AU は 4, 6 pin が VCC(+5V)、3, 5 pin が GND です。
手書きの回路図において逆に結線されているので、参考にされる方はデータシートを参照のうえ確認されることをおすすめします(ここに掲載の回路図の通り結線して通電するとATmega328P-AUを壊します)