57章:AVRマイコンATMEGA328P-PUへのブートローダの書込み方法

    作成2015.11.09

     AVRマイコンATMEGA328P-PUへのブートローダの書込み方法について検討してみました。

  1. 基板組込時に不可欠な部品と価格
     デバッグが完了した多くの場合、基板組込に不可欠な部品は以下のとおりです。
    (1)AVRマイコンATMEGA328P-PU 1個 小計¥250
    (2)クリスタル(水晶発振子)16MHz 1個 小計¥30
    (3)コンデンサー 22pF  2個 小計¥20
     合計¥300と安価となります。


  2. AVRマイコンATMEGA328P-PUへのブートローダ書込みの必要性
     Arduino UNOでAVRマイコンATMEGA328P-PUにスケッチを書き込むには、あらかじめAVRマイコンATMEGA328P-PUへブートローダを書込む必要があります。
     あらかじめブートローダを書込み済みのAVRマイコンATMEGA328P-PUもあるそうですが、¥250のAVRマイコンATMEGA328P-PUには書き込まれていませんでした。


  3. AVRマイコンATMEGA328P-PUへのブートローダの書込み方法参照アドレス
    Using an Arduino as an AVR ISP (In-System Programmer)
    https://www.arduino.cc/en/Tutorial/ArduinoISP

     このチュートリアルでは、AVRのISP(インシステムプログラマ)としてArduinoのボードを使用する方法について説明します。
     これは、AVRにブートローダを書き込むためにボードを使用することができます(たとえば、Arduinoのに使用されるATmega168またはATmega328)。
     この例のコードは、ランドールボーンによってメガISPのファームウェアに基づいています。

    手順
    AVRにブートローダを書き込むためにArduinoボードを使用するには、いくつかの簡単な手順に従う必要があります。

    (1)Arduinoボードに「スケッチの例」の「ArduinoISP」ファームウェアをオープンしてください。
    (2)Arduino 1.0での注意:ArduinoISPコードに小さな変更を加える必要があります。
      heartbeat() function で "delay(40);" を "delay(20);"に変更します。
    (3)使用しているボードに対応してツールメニューのボードの項目とシリアルポートメニューを選択してください。(ボードはプログラムされていません。)
    (4)ArduinoISPスケッチを書き込みます。
    (5)下の図に示すようにターゲットとArduinoボードを配線します。
    (Arduino Unoの注意:resetとgroundとの間に10μFのコンデンサを追加する必要があります。)
    (6)メニューのツールのブートローダーを書込みたいボードに対応ボードメニューを選択します。(プログラマとして使用していないボード)詳細については、environmentページでボードの説明を参照してください。
    (7)メニュー、ツール、書込み装置のArduino as ISP を選択します。
    (8)ツール、ブートローダを書き込むコマンドを使用します。

     この手順は、SPI信号ピンを持つボードで動作します。SPI信号は、以下に示すISPのコネクタに接続されなければなりません。



    Circuit (targeting Arduino Uno, Duemilanove, or Diecimila)





  4. Arduino UNOが1個の場合の配線回路図
     手持ちのArduino UNOが1個のため以下に示す配線としました。





  5. ブートローダ書込み手順
    (1)スケッチの例からArduioISPのファームウェア(スケッチ)を開く。



    (2)ツール→マイコンボードメニューでArduino Unoを選択する。



    (3)ツール→シリアルポートメニューでArduino Unoのポート番号(COM番号)を指定する。



    (4)Arduino UnoにArduinoISPのスケッチを書き込みます。



    (5)Arduino UNOが1個の場合の配線回路図に従って配線します。

    (6) ツール→書き込み装置メニューでArduino as ISPを選びます。



    (7) ツール→ブートローダを書き込むメニューを選び、ブートローダを書き込むを実行します。



    (8)以上の手順で、ブートローダが書き込まれていないAVRマイコンATMEGA328P-PUにブートローダが書き込めました。
    (9)2度目の書込みでは以下のエラーが発生しました。
    Arduino: 1.6.5 (Windows 7), ボード:"Arduino Uno"
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override this check.
    ブートローダの書き込み中にエラーが発生しました。
    This report would have more information with
    "コンパイル中の詳細な出力を表示する"
    ファイル > 設定 で有効にする


  6. 2度目の書込みでのエラー内容詳細
     2度目の書込みでのエラー内容詳細を以下に示します。(実際の動作には支障ありません。)
    Arduino: 1.6.5 (Windows 7), ボード:"Arduino Uno"
    C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino
    \hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM16 -b19200 -e -Ulock:w:0x3F:m
     -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m 
    avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
             System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
    
             Using Port                    : COM16
             Using Programmer              : stk500v1
             Overriding Baud Rate          : 19200
             AVR Part                      : ATmega328P
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC2
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :
    
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
               flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
               lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
    
             Programmer Type : STK500
             Description     : Atmel STK500 Version 1.x firmware
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.06s
    avrdude: Device signature = 0x000000 (retrying)
    Reading | ################################################## | 100% 0.06s
    avrdude: Device signature = 0x000000 (retrying)
    ブートローダの書き込み中にエラーが発生しました。
    Reading | ################################################## | 100% 0.05s
    avrdude: Device signature = 0x000000
    avrdude: Yikes!  Invalid device signature.
             Double check connections and try again, or use -F to override
             this check.
    avrdude done.  Thank you.
    


  7. Arduino-UNO基板への実装とスケッチの書込み
    (1)ブートローダ書込み済みのAVRマイコンATMEGA328P-PUを慎重に交換します。
    (2)AVRマイコンATMEGA328P-PU交換済みのArduino-UNO基板は正常にスケッチの書込みができて正常に動作しました。
    (3)スケッチの書込みとデバッグが完了したAVRマイコンATMEGA328P-PUは、Arduino-UNO基板から取り外して単独で動作します。
    (4)単独動作で必要な部品はAVRマイコンATMEGA328P-PU、クリスタル(水晶発振子)16MHz、コンデンサー 22pF程度なので、コストと実装スペースが大幅に節約できます。


  8. AVRマイコンATMEGA328P-PUへのブートローダの書込み方法まとめ
    (1)AVRマイコンATMEGA328P-PUへのブートローダの書込みが正常にできることが、確認できました。
    (2)AVRマイコンATMEGA328P-PUへのブートローダの書込みの2度書きはできないようです。
    (3)AVRマイコンATMEGA328P-PU交換済みのArduino-UNO基板は正常にスケッチの書込みができて正常に動作しました。
    (4)スケッチの書込みとデバッグが完了したAVRマイコンATMEGA328P-PUは、Arduino-UNO基板から取り外して単独で動作します。
    (5)単独動作で必要な部品はAVRマイコンATMEGA328P-PU、クリスタル(水晶発振子)16MHz、コンデンサー 22pF程度なので、コストと実装スペースが大幅に節約できます。




58章:自作ライブラリの作り方と設定方法に行く。

トップページに戻る。