Arduinoは標準的には5V、16MHz仕様だが、3.3V、8MHz仕様とか、5v、8MHz仕様とかで使いたかった。その場合、ブートローダをATmega328などのマイコンに書き込まないといけない。書き込みには、ArduinoUNOなどを使い、それにArduinoISPというスケッチを書き込み、ブレッドボードなどで配線してブートローダを書き込むことができる。ブレッドボードで何とかなるなら、それでもいいか、と思い、やってみることにした。ブレッドボードを使っての書き込みについては、インターネットで調べればいくつもの情報が得られる。以前に手に入れたゼロプレッシャーソケットもちょうどある。これを使えば、マイコンの抜き差しが楽である。回路も簡単である。早速やってみた。
ところが、である。うまくいかない。こんなに簡単な回路なのに、うまくいかない。びっくりである。原因を一つずつ探っていく。ああでもない、こうでもないと悩む。原因がわからない。悩む。そしてついに原因がわかった。なんと、このゼロプレッシャーソケットの足が短く、ブレッドボードに刺すとうまくつながる足とつながらない足があるのだ!つまり、配線がうまくいっていなくて、断線した状態だったのである!一時的な回路の確認にブレッドボードを使う。書き換えたりするのにゼロプレッシャーソケットを使う。しかし、ゼロプレッシャーソケットはブレッドボード上で使うことは想定されていないのである。まさか、である。びっくり、である。
本来のゼロプレッシャーソケットの使い方とは大きく異なるが、マイコンだけでなく、ジャンパー線を直接ゼロプレッシャーソケットの差し込んでみた。このようにするとうまくいく。でも毎回こんなことはやっていられない。
ブレッドボードは一時的な使用にはよいが、恒常的な利用には全く適さない。線が簡単に抜けてしまう。
マイコンにプログラムを書き込んだ後、マイコンの抜き差しを考えると、ゼロプレッシャーソケットはぜひとも使いたい。そこで、ゼロプレッシャーソケットを使ったarduino用の書き込み用のシールドを作ることにした。ブレッドボードを使っての書き込みやブートローダ製作についてはインターネット上で検索するといろいろ情報が集められる。いくつか調べたのち、「しなぷすのArduino Uno用ブートローダライタシールドの製作(2)」(https://synapse.kyoto/hard/bootloader_writer/page002.html)をもとに作ってみた。普段作る時はブレッドボード上に作って確認した後実際の製作に入るが、今回は、それができないので、直接ユニバーサル基盤上に作ることにした。
ただ、arduino の足は普通のユニバーサル基盤とは微妙に異なるようになっている。Arduinoのシールド用のユニバーサル基盤は手元にない。しょうがないので、普通のユニバーサル基盤を切って、つないで、合わせるしかない。うーーーん、手間がかかる。
異なる色のLEDを使う。そのためにどのくらいの抵抗を使うかは明るさを見ながら試しながら決める。こういうのにはブレッドボードで試してみるのが便利である。
調べた製作記事をもとに、材料をそろえ、配置を考え、実際に配置しながら、制作した。私の場合、ICSP端子は使う予定がないので、配置しないことにした。完成した。
なかなか使い勝手がいい。作ってみると、思ったよりもずっと便利である。ブートローダも、スケッチも、すいすいと書けるし、ゼロプレッシャーソケットを使っているので、書いたマイコンをブレッドボードに持っていって試すのも容易だ。
使い方も「しなぷすのArduino Uno用ブートローダライタシールドの製作」(https://synapse.kyoto/hard/bootloader_writer/page001.html)にくわしい。概要は以下のとおりである。
書き込みはArduinoIDEを使う。
ブートローダであろうが、スケッチであろうが、まずしておく準備が次に書く1。
1.ArduinoUNOに「ArduinoISP」のスケッチを書き込んでおく。(ブートローダライタシールドがない状態で。あるいは、シールドがついた状態で、スイッチをAutoReset側(写真ならば、「このシールド」「使わない」)にして。)
次に、すること。ブートローダの場合は2.、スケッチの場合は2‘.。
2.ゼロプレッシャーソケットにはマイコンをセット、スイッチはKillReset側(写真ならば、「このシールド」「使う」)、ツールで、書き込むマイコンボード(必要に応じプロセッサ)を選んで、書き込み装置として「Arduino as ISP」(AruduinoISPではないので注意!)を選択、そして、「ブートローダを書き込む」。
2‘.ゼロプレッシャーソケットにはマイコンをセット、スイッチはKillReset側(写真ならば、「このシールド」「使う」)、書き込みたいスケッチがAruduinoIDEにある状態で、ツールで書き込むマイコンボード(必要に応じプロセッサ)を選んで、書き込み装置として「Arduino as ISP」(AruduinoISPではないので注意!)を選択し、「書込装置を使って書き込む」。
注:作成したブートロードライタシールドはArduinoUNOにセットしたままでよい。ただし、1.の時はスイッチはAutoReset側にしておく。シールドのゼロプレッシャーソケットにはマイコンは差し込んでおかない方が安全である。「ArduinoISP」のスケッチはファイルのスケッチ例にある。
注:2.と2‘.の時は、スイッチはKillReset側。ゼロプレッシャーソケットにはマイコンをセットしておく。向きを間違えないように注意する。
ついでに。
ATmega328Pを8MHzで使うためのブートローダの書き込みについては
http://physics.cocolog-nifty.com/weblog/2019/09/post-eab128.html
https://qiita.com/hotchpotch/items/5aa3ccf8b5d94ea3f4a6
https://teppodone.hatenadiary.jp/entry/ArduinoIDE1.8.5_8MHz_internalClock_ATmega328P
などを参照。
0コメント