Atmega328Pを単体で使う(ブートローダ書き込み、スケッチ書き込み)

 基本的な配線(最小構成)


ATMEGA328P を Arduino として使うためには以下のような配線になります。ブートローダー書込 / スケッチ書込/ 単体実行に対応した配線です

必要なパーツは以下の通りです。

ATMEL328P-PU×1
クリスタル (水晶発振子) 16MHz×1 
22pF セラミックコンデンサ×2 
0.1μF セラミックコンデンサ×1 
10KΩ 抵抗×1 
タクトスイッチ×1 


ブートローダーの書き込み


ATmega328Pは素のチップのため、スケッチの書き込みにはブートローダーを先に書き込んでおく必要があります。

まずはブートローダーの書き込み作業をやっていきます。ブートローダーの書き込みにはライタ(書き込み装置)と呼ばれる専用のハードが必要となってきますが、Arduinoボードを書き込み装置として書き込むことが出来ます。

Arduino Unoを書き込み装置にする設定


  1. Arduino UnoとPCを繋ぎ、
  2. [ファイル]→[スケッチ例]→[11.ArduinoISP]からArduino ISPを選択


  1. このスケッチ(Arduino ISP)を通常の手順でArduino Unoに書き込みます。
これでこのArduino Unoはブートローダーを書き込むためのライタとして機能します。



Arduino uno と Atmega328p を接続する


  1. Arduino uno と Atmega328p の配線を行います
Arduino UnoATMEGA328P(28pin)ATMEGA328P(32pin)Arduino Nano
10 - SS1 - RESET29 - RESETRESET
5V7 - VCC4 - VCCVCC
GND8 - GND3 - GNDGND
11 - MOSI17 - MOSI15 - MOSID11 - MOSI
12 - MISO18 - MISO16 - MISOD12 - MISO
13 - SCK19 - SCK17 - SCKD13 - SCK





unoは互換機を使っています。



Arduino uno側のICSP6ピン接続

 Arduino uno側は次のICSP6ピンを使う方法もあります。次の接続方法も同等の配線となります。

Arduino UNOATMEGA328P
#10 (SS)1 RESET
ICSP 27 VCC
ICSP 68 GND
ICSP 417 MOSI
ICSP 118 (MISO)
ICSP 319 (SCK)




ブートローダーの書き込み


  1. [ツール | ボード] で Arduino UNO を選択

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



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



スケッチ書き込み


重要事項(書き込み方法の種類)

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シリアル変換モジュールを使う


配線をつなぎ変えると、ブートローダ書き込みとスケッチの書き込みができる回路をブレッドボードで作りました。

FT232RLATMEGA328P(28pin)ATMEGA328P(32pin)Arduino Nano
DTR1 - RESET29 - RESETRESET
TX2 - RX30 - RXDD0 - RX
RX3 - TX31 - TXDD1 - TX
VCC7 - VCC4 - VCCVCC
GND8 - GND3 - GNDGND




スケッチのアップロードは通常と同じです。Arduino IDEの [マイコンボードに書き込み] ボタンを押して書き込みを行います。 1. 正しいポートを選択していることを確認してください。 2. ボートは動作クロックによって選択します。 * ATMEGA328 が 8Mhz で動作している場合は、[ツール] → [ボード]を選択し、[ブレッドボード上の Atmega 328 (8MHz 内部クロック)]を選択します。 * ATMEGA328 が 16Mhz で動作している場合は、[ツール] → [ボード]を選択し、[Arduino Uno] を選択します。

Next Post Previous Post