LoginSignup
8
8

More than 5 years have passed since last update.

Arduino UNOでATmega328 生DIPにbootloaderを書き込む

Posted at

はじめに

Arduinoで冷凍庫半開き検出ブザーを作ってみた 前編 で原理確認をした後でArduino Nanoを使って実際に使える状態のものを作ろうとしていたのですが、発注したArduino Nanoがいつまで経っても届かないので、ATmega328 DIPを使う方針に切り替えました。
ただ、生DIPを買ってきてもbootloaderを書き込まないとArduino IDEからは使えない+スケッチを書き込めないとわかったので、その手順をまとめておきます。

参考にしたのは、Arduino公式の From Arduino to a Microcontroller on a Breadboard です。

必要なもの

  • Arduino UNO
  • ATmega328P-PU (Arduino UNOに乗っているものと同じ)
  • 水晶 16 MHz
  • 抵抗 10kΩ
  • コンデンサ 22pF
  • IC引き抜き工具
  • ブレッドボード
  • ジャンパ線

生DIPとArduino UNOの接続

生DIPにbootloaderを書き込むために、ブレッドボードに生DIPと周辺回路を作ります。
ATmega328P-PUのPIN配置は以下のようになっています。(http://www.atmel.com/Images/8161s.pdf より引用)

WS000002.JPG

接続が必要なピンは以下の通りです。

Arduino UNO ATmega328P-PU Other
D13 PB5 (SCK/PCINT5) 抵抗 10kΩ
D12 PB4 (MISO/PCINT4) -
D11 PB3 (MOSI/OC2A/PCINT3) -
D10 PC6 (PCINT14/RESET) -
5V VCC, AVCC -
GND GND -
- PB6 (PCINT6/XTAL1/TOSC1) 水晶 16MHz、コンデンサ 22pF
- PB7 (PCINT7/XTAL2/TOSC2) 水晶 16MHz、コンデンサ 22pF

接続イメージは From Arduino to a Microcontroller on a Breadboard を参照してください。

実際の接続は以下のような感じになります。

2015-10-22 00.43.06.jpg

生DIPにbootloader書き込み

bootloaderが書かれていないATmega328PをArduinoで扱うためには、1度bootloaderを書き込む必要があります。
手順は From Arduino to a Microcontroller on a Breadboard の通りです。

Arduino IDEで以下の操作を行います。

  1. メニューバー → ファイル → スケッチの例 → ArduinoISP を選択
  2. "マイコンボードに書き込む" を選択し、ArduinoISPをArduino UNOに書き込む
  3. メニューバー → ツール → ボード → "Arduino Duemilanove or Diecimila" を選択
  4. メニューバー → ツール → ボード → "ATmega328" を選択
  5. メニューバー → ツール → ポート → Arduino/Genuino Uno のシリアルポートを選択
  6. メニューバー → ツール → 書込装置 → "Arduino as ISP" を選択
  7. メニューバー → ツール → "ブートローダを書き込む" を選択

以下の状態になっているのが正しいです。

WS000003.JPG

これでエラーが発生しなければ、bootloaderの書き込みは成功です。
bootloaderは一度書き込めば、再度書き込む必要はないとのことなので、後はArduino IDEからスケッチを書き込んでいろいろできるようになります。

スケッチの書き込み

From Arduino to a Microcontroller on a Breadboard ではスケッチの書き込みを行う際には、ブレッドボードの配線を変えて、さらにArduino UNO上のATmega328Pも外さないといけない、と書いていました。
ただ、Arduino UNOのATmega328Pを外す必要があるなら、Arduino UNOにbootloaderを書いたATmega328Pを差し替えてスケッチを書き込んだほうがよくないか?と思って試してみたら、問題なくスケッチの内容を焼いて動作させることができました。(Arduino UNO上のLチカで確認)
Lチカのスケッチが書かれたATmega328Pをスタンドアローンで動作させると、以下のような感じになります。

2015-10-22 23.46.49.jpg

Arduino UNOからATmega328Pを引っこ抜くときにはIC引き抜き工具が必要になると思うので、こちらのほうが個人的にはやりやすいと感じました。
もちろん、ICを交換するときは、ACアダプタとUSBは接続しないようにしましょう。

このとき、ボードの種類をArduino UNOに戻すと書き込みに失敗します。
ボードの種類は"Arduino Duemilanove or Diecimila"のままにしておきましょう。
書込装置は"AVRISP mkII"に戻しました。

WS000004.JPG

そして後半へ

これでATmega328Pを単体で使えるようになったので、ユニバーサル基板に回路を実装することができます。
Arduinoで冷凍庫半開き検出ブザーを作ってみた 前編 でやってしまった失敗を繰り返さないように、回路図、配線図のチェックはちゃんとやって実装に取り掛かろうと思います。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8