Atmega328Pを単体で使う(ブートローダ書き込み、スケッチ書き込み)
基本的な配線(最小構成)
ATMEGA328P を Arduino
として使うためには以下のような配線になります。ブートローダー書込 /
スケッチ書込/ 単体実行に対応した配線です。
unoは互換機を使っています。
必要なパーツは以下の通りです。
ATMEL328P-PU×1
クリスタル (水晶発振子) 16MHz×1
22pF セラミックコンデンサ×2
0.1μF セラミックコンデンサ×1
10KΩ 抵抗×1
タクトスイッチ×1
ブートローダーの書き込み
ATmega328Pは素のチップのため、スケッチの書き込みにはブートローダーを先に書き込んでおく必要があります。
まずはブートローダーの書き込み作業をやっていきます。ブートローダーの書き込みにはライタ(書き込み装置)と呼ばれる専用のハードが必要となってきますが、Arduinoボードを書き込み装置として書き込むことが出来ます。
Arduino Unoを書き込み装置にする設定
- Arduino UnoとPCを繋ぎ、
- [ファイル]→[スケッチ例]→[11.ArduinoISP]からArduino ISPを選択

- このスケッチ(Arduino ISP)を通常の手順でArduino Unoに書き込みます。
Arduino uno と Atmega328p を接続する
- Arduino uno と Atmega328p の配線を行います
Arduino Uno | ATMEGA328P(28pin) | ATMEGA328P(32pin) | Arduino Nano |
---|---|---|---|
10 - SS | 1 - RESET | 29 - RESET | RESET |
5V | 7 - VCC | 4 - VCC | VCC |
GND | 8 - GND | 3 - GND | GND |
11 - MOSI | 17 - MOSI | 15 - MOSI | D11 - MOSI |
12 - MISO | 18 - MISO | 16 - MISO | D12 - MISO |
13 - SCK | 19 - SCK | 17 - SCK | D13 - SCK |
Arduino uno側のICSP6ピン接続
Arduino uno側は次のICSP6ピンを使う方法もあります。次の接続方法も同等の配線となります。
Arduino UNO | ATMEGA328P |
---|---|
#10 (SS) | 1 RESET |
ICSP 2 | 7 VCC |
ICSP 6 | 8 GND |
ICSP 4 | 17 MOSI |
ICSP 1 | 18 (MISO) |
ICSP 3 | 19 (SCK) |
ブートローダーの書き込み
- [ツール | ボード] で Arduino UNO を選択

- [ツール | 書き込み装置] で Arduino as ISP を選択

- [ツール |ブートローダを書き込む] でブートローダーを書き込む

スケッチ書き込み
重要事項(書き込み方法の種類)
Arduinoではスケッチの書き込み方法が2種類あります。ICSPを使う方法ではスケッチは1回しか書き込めません。繰り返しスケッチを書き込む(スケッチを修正する)場合にはUARTを使います。
書き込み方法の種類
Arduinoを使って、ICSPで書く方法
AVR標準の書き込み方法です。スケッチを [スケッチ ] → [
書き込み装置を使って書き込む] で書き込みできます。
完全に初期化したり、ブートローダを書き込んだり、高速に起動させたいソフトを書き込むのに使います。
- 配線はブートローダー書き込みのままでいいです。あるいは、2x3の6ピンヘッダを使うこともできます。
- 基本的に1つのソフトしか書けません。ブートローダを書いた後、スケッチを書くとブートローダは削除されます。
Arduino
IDEでは以下のように、「書き込み装置を使って書き込む」で書き込んだ場合に該当します。
UART経由で書く方法(Arduino IDEの "?" [マイコンボードに書き込み] ボタン)
Arduino独特の書き込み方法です。Arduino uno ボードを使って書き込むこともできますが、FT232RL USBシリアル変換モジュールを使う方が簡単です。
- Atmega328pにブートローダだけが先に書き込まれている必要があります。
- Arduino IDEなどで何らかのスケッチをICSP経由で書きこんでしまうと、UART経由では書き込めません。
ブートローダとは、UART経由でソフトを書き込めるようにするためのソフトのことです。
Arduino
IDEでは、以下のボタンはUART経由で書き込みとなります。ICSP経由での書き込みではありません。
普段はこちらを意識せずに使っていると思いますが、Arduino
UNOなどに入っているATMEGA328Pにはブートローダのみが書き込まれているので、UART機能が動きます。
FT232RL USBシリアル変換モジュールを使う

How to Connect a FT232RL Programmer to the Arduino ATMEGA328 for Uploading Sketches
How to Connect a FT232RL Programmer to the Arduino ATMEGA328 for Uploading Sketches: In this mini Instructable you will learn how to connect the FT232RL chip to the ATMEGA328 microcontroller to upload sketches. You can see an Instructable on this stand-alone microcontroller here.
配線をつなぎ変えると、ブートローダ書き込みとスケッチの書き込みができる回路をブレッドボードで作りました。
FT232RL | ATMEGA328P(28pin) | ATMEGA328P(32pin) | Arduino Nano |
---|---|---|---|
DTR | 1 - RESET | 29 - RESET | RESET |
TX | 2 - RX | 30 - RXD | D0 - RX |
RX | 3 - TX | 31 - TXD | D1 - TX |
VCC | 7 - VCC | 4 - VCC | VCC |
GND | 8 - GND | 3 - GND | GND |
スケッチのアップロードは通常と同じです。Arduino IDEの [マイコンボードに書き込み] ボタンを押して書き込みを行います。
1. 正しいポートを選択していることを確認してください。
2. ボートは動作クロックによって選択します。
* ATMEGA328 が 8Mhz で動作している場合は、[ツール] → [ボード]を選択し、[ブレッドボード上の Atmega 328 (8MHz 内部クロック)]を選択します。
* ATMEGA328 が 16Mhz で動作している場合は、[ツール] → [ボード]を選択し、[Arduino Uno] を選択します。
書き込みエラー
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
など、not in sync が出て書き込めないとき
![Arduinoに書き込めない問題を修正する方法[not in sync] | Memoteki](https://memoteki.net/wp-content/uploads/2013/03/atmega328p-reset.png)
Arduinoに書き込めない問題を修正する方法[not in sync] | Memoteki
Arduinoのリセットピンの接続方法が問題で以下のようなエラーが出て、スケッチをアップロードできませんでした。その対処方法をメモしておきます。 ----2017年12月24日追記---- タイトルを変更しました。 旧タイトル「Arduin