atmega328を組み込みとして使う
自分の作りたいものの基板にatmega328を載せる時、あらかじめ書き込まれたものを載せるのではなく、載せたまま書き換えられるようにしたいと思って色々調べた方法を二つまとめます。
一つ目は、別に用意したarduinoを書き込み装置としてSPI通信を用いて書き換える方法です。こちらは基板上にはatmega328とピンヘッダだけあればよく、省スペースで済みますが、書き込みに毎回若干の手間がかかります。
二つ目は、FT232RLというICを用いてUSB⇔シリアル変換で書き込む方法です。基板上に簡易版arduinoを構成するような形になります。基板上にFT232RLとUSBコネクタを実装する必要がありますが、普通のarduinoと同じように扱う事が出来るため、書き込みなどは手軽に行えます。
手法①
ブートローダ書き込み済みのatmega328を基板に実装し、SPI通信に必要な下記の6pinをピンヘッダとして取り出します。そしてそのpinを書き込み用arduinoと下記のように接続します。
pin | 対象atmega328 | 書き込み用arduino |
1 | MISO(D12) | MISO(D12) |
2 | Vcc | Vcc |
3 | SCK(D13) | SCK(D13) |
4 | MOSI(D11) | MOSI(D11) |
5 | RESET | SS(D10) |
6 | GND | GND |
arduinoの下の方に出ている6pinをつかってもいいですが、SSではなくRESETが取り出されているので、注意が必要です。接続方法としてはブートローダの書き込みと同じですが、内部クロックを使用するブートローダを書き込んだ場合は水晶発振器やセラロックを接続する必要はありません。
接続が完了したら通常通りの方法で書き込み用arduinoに「ArduinoISP」を書き込みます。書き込み完了したら、ArduinoIDEの設定を下記の通り変更します。
ボード:書き込んだブートローダと同じ
そしてスケッチを書き込みますが通常の方法ではなく「スケッチ」→「書き込み装置を使って書き込む」を使って書き込みます。
手法②
16MHz外部クロックを使う時はarduino nano、内部クロックを使う時は、Atmega328 on a breadboard(internal 8MHz clock)のブートローダを書き込んで下さい。
下記の回路図のように接続します。これはarduino nanoの回路図を極限まで簡略化した回路になります。多分FT232RLのTESTやRESETは解放でも大丈夫です。回路図にはありませんが、内部クロック使用でない時は水晶発振器の接続も忘れないで下さい。
接続すれば通常通りの方法で書き込めますが、内部クロックを使った時はArduino pro or pro miniの3.3V/8MHzのボードに設定して下さい(3.3V設定ですが5Vでも使用可能)。
あくまで備忘録なので完全に自分用の文章で省略しまくってます。将来の自分がわかればいいのです。。。