試作基板が動かない!
お疲れ様です。つちさんです。
以前組んで発注した試作基板が先日届きました(fig. 1.)。

早速動かしてみようということで、制御用のマイコンをはんだ付けし、プログラムの書き込みを試みました。 が、マイコンとの接続が確立できませんでした。
困りました。 マイコン自体の再起動やケーブルの刺しなおしも効果はありません。 そこで、マイコン周辺の回路に着目しました。
こうしたマイコンには、もちろん普通のPCのように目に見える入出力系統や状態を設定できるボタンなどついていません。 かわりにマイコンについている沢山のピンそれぞれへ、電圧がかかっているかいないかという点を通じて初期設定をします。
私はそもそもこの初期設定が誤っている可能性に目を付けました。
ひとまずテスターを使って各所の電圧を調べ、またピン同士や途中の回路でのショートが発生していないかを調べました。 結果として、「EN」というピンが電源のマイナス極につながっている状態であることが分かりました。
ENピンはマイコンのいわば電源ボタンのようなピンで、ここの電圧次第でマイコンが動かなくなってしまいます。 このときENピンとつながっているのは電源のシャットダウン用のスイッチだけでした。 つまりスイッチへの配線が間違っている、スイッチが壊れている可能性が考えられます。
そこで、回路基板のうちENピンとスイッチの間の配線を切断しました(fig. 2.)。

そしてマイコンに再び書き込みを試みたところ、またもや失敗しました。
今度はいよいよ原因がわからなくなってきます。 そのため疑う場所を変えて、PCとマイコンを接続するためのチップについて検討してみました(fig. 3.)。

今回用いたマイコンでは、書き込みを行う際に次のような手順を踏む必要があります。
- 起動モードを書き込みモードにする
マイコンの「BOOT」ピンは通常抵抗によりほんの少しだけ電源の+極とつながっています(プルアップといいます)。 そのため普通は+極から少しだけ電気が流れており、その状態だと書き込まれたプログラムを実行するモードで起動することになります。
今回はプログラムを書き込んでいきたいため、BOOTピンを-極とつなぎます。 - マイコンを再起動する
起動モードが設定されても、電源が入っているならマイコンは起動されたままです。 そこで、ENピンを用いてマイコンを再起動します。
(この理解は後に間違いだと分かったのですが)ENピンと+極をつなぐと、マイコンが再起動をくりかえします。 この時は、ENピンを+極につなぐことで再起動を実行しました。 - PCからマイコンに書き込みを実行する
この手順を踏むと、2. の段階まではマイコンからのログがPCに届いていました。この時送信されていたのは再起動に関するログのみでした。 「書き込みモードで再起動された。」ことや、「通常モードで再起動された。」ことが問題なくマイコンから送信され、PCまでたどり着いていました。
しかし、3. の段階に入るとマイコンからの応答は一切なくなってしまいます。
問題の特定のため、PCや書き込み用アプリ、マイコンとPCを接続するチップのそれぞれを確認しました。 しかし、そのいずれにも異常は見つかりませんでした。
本格的に悩み始め、何人かに相談したところ、ある事項が判明しました。 ENピンは+極をつなぐことで再起動するモノではなかったのです。
そもそもENピンの役割は、マイコンを有効化したり再起動・リセットするためのものです。 しかしその動作としては、-極につながっている間はマイコンをリセットし動作を止めておく、+極につながっている間はマイコンを動作させる、というものでした。
マイコンは当然起動される必要がありますから、ENピンは通常+極につながっているべきです。 そして書き込み中もマイコンは起動されている必要があるため、ENピンは同様に+極につながっている必要があります。
しかし少し調べたところ、ENピンに何もつながない状態だと、ENピンは-極につながっているようなふるまいをすることが分かりました。 そして私が、「ENピンは+極とつながると再起動を続けるピンである」と考えていたのは勘違いであったこともわかりました。 実際にはENピンは、私がつないだ+極と元々の-極につながったような状態の間を揺れ動き、再起動をくりかえしていたようです。
この解決策の下、私は+極とENピンを抵抗を介してつなぎ、プルアップ状態にしました。 そして、先ほどの手順を正しくやり直しました。 つまり:
- 起動モードを書き込みモードにする
- ENピンに-極を接続する
- PCからマイコンに書き込みを実行する
のようにしました。
すると、問題なく書き込みを実行することができました。
終わってから振り返れば何ともくだらないミスでした。 問題ないと思った点でも確認しなおすの、大事ですね......。