2018年7月20日金曜日

Z80-MBCの作成 其の参

ATmega32a-PUそのままでは何も機能しません。
Arduinoとしてスケッチの書込みやシリアルモニタで通信できるようにするには、ブートローダを書き込む必要があります。

以下で、その手順を解説します。
1. 準備

2. ArduinoをAVRライターにする

最初に、ArduinoのI/Oポートへ何も接続しない状態でPCとUSB接続します。
Arduino IDEを起動し、

  1. ArduinoISPスケッチを開く

    "ファイル" → "スケッチ例" → "11.ArduinoISP" → "ArduinoISP"を選択。

    ファイル
    編集
    スケッチ
    ツール
    ヘルプ
    新規ファイル
    ⌘N
    開く...
    ⌘O
    最近使った項目を開く
    ▶︎
    スケッチブック
    ▶︎
    スケッチ例
    ▶︎
    閉じる
    ⌘W
    保存
    ⌘S
    名前と付けて保存
    ⇧⌘N

    プリンタの設定...
    ⇧⌘P
    印刷...
    ⌘P
    内蔵のスケッチ例
    01.Basics
    ▶︎
    02.Digital
    ▶︎
    03.Analog
    ▶︎
    04.Communication
    ▶︎
    05.Control
    ▶︎
    06.Sensors
    ▶︎
    07.Display
    ▶︎
    08.Strings
    ▶︎
    09.USB
    ▶︎
    10.StarterKit_BasicKit
    ▶︎
    11.ArduinoISP
    ▶︎

    ArduinoISP

  2. ボードの選択

    "ツール" → "ボード"→ "Arduino/Genuino Uno"を選択。
    ※ここではArduino UNOを使用していますが、任意の機種を選択して下さい。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "Arduino/Genuino Uno"
    ▶︎
    シリアルポート:
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    ボードマネージャー

    Arduino AVRボード
    Arduino Yún
    ✓Arduino/Genuino Uno
    Arduino Duemilanove or Diecimila
    Arduino Nano

  3. シリアルポートの選択

    "ツール" → "シリアルポート"→ "Arduinoと接続しているポート"を選択。
    "Arduinoと接続しているポート"は、"COM~"とか"/dev/cu.useb~"などの表記となります。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "Arduino/Genuino Uno"
    ▶︎
    シリアルポート:
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    シリアルポート
    関係ないポート
    関係ないポート
    Arduinoと接続しているポート

  4. マイコンボードに書き込む

    マイコンボードへの書込みを行う手立ては3つあります。

    1. "マイコンボードに書き込む"ボタン

      Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。

      ➡︎
      ⬆︎
      ⬇︎
      マイコンボードに書き込む

    2. メニューの"マイコンボードに書き込む"

      "スケッチ" → "マイコンボードに書き込む"を選択。

      スケッチ
      ツール
      ヘルプ
      検証・コンパイル
      ⌘R
      マイコンボードに書き込む
      ⌘U
      書込装置を使って書き込む
      ⇧⌘U
      コンパイルしたバイナリを出力
      ⌥⌘S

      スケッチのフォルダを表示
      ⌘K
      ライブラリをインクルード
      ▶︎
      ファイルを追加


    3. ショートカットキー

      Ctrl
      +
      U
      Windowsの場合
      +
      U
      Macの場合

    上記のいずれかで書込みを行って下さい。
暫く待つと、以下の様に"ボードへの書き込みが完了しました。"との表示が出ます。

➡︎
⬆︎
⬇︎
ArduinoISP
  1. // ArduinoISP
  2. // Copyright (c) 2008-2011 Randall Bohn
  3. // If you require a license, see
  4. // http://www.opensource.org/licenses/bsd-license.php
  5. //
  6. // This sketch turns the Arduino into a AVRISP using the following Arduino pins:
  7. //
  8. // Pin 10 is used to reset the target microcontroller.
  9. //
  10. // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
  11. // with the target. On all Arduinos, these pins can be found
  12. // on the ICSP/SPI header:
  13. //
  14. //               MISO °. . 5V (!) Avoid this pin on Due, Zero...
  15. //               SCK   . . MOSI
  16. //                     . . GND
  17. //
  18. // On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as
  19. // digital pin 11, 12 and 13, respectively. That is why many tutorials instruct
  20. // you to hook up the target to these pins. If you find this wiring more
  21. // practical, have a define USE_OLD_STYLE_WIRING. This will work even when not
  22. // using an Uno. (On an Uno this is not needed).
  23. //
  24. // Alternatively you can use any other digital pin by configuring
  25. // software ('BitBanged') SPI and having appropriate defines for PIN_MOSI,
  26. // PIN_MISO and PIN_SCK.
  27. //
  28. // IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as
  29. // the programmer, make sure to not expose any of the programmer's pins to 5V.
  30. // A simple way to accomplish this is to power the complete system (programmer
  31. // and target) at 3V3.
  32. //
  33. // Put an LED (with resistor) on the following pins:
  34. // 9: Heartbeat - shows the programmer is running
  35. // 8: Error - Lights up if something goes wrong (use red if that makes sense)
  36. // 7: Programming - In communication with the slave
  37. //
ボードへの書き込みが完了しました。
avrdude done.  Thank you.

以上で、ArduinoがAVRライター化は完了となります。
※エラーが出た場合は、接続や設定の確認を行って下さい。

3. Mighty Coreのインストール

Arduino IDEへMightyCoreをインストールします。
詳しい手順は、"How to install"に記載されているので、ここでは手順の詳細は解説しません。

上記リンクの内容に従いMightyCoreのインストールを完了して下さい。

4. ArduinoとATmega32の接続

ATmega32への物理的な配線は、MightyCoreに記載されている"Minimal setup"の"DIP-40 package"を参考に行います。

図中のUARTの箇所と、外部発振器の箇所は不要なので組み込みません。
また、"DIP-40 package"では9:RESET(ATmega32)-RESET(Arduino)で接続されている個所を9:RESET(ATmega32)-10:SS(Arduino)に接続しないと書込み時にエラーが出るようです。

10kΩ抵抗、0.1μFコンデンサも無くても問題ありませんが、ここでは"DIP-40 package"に従い接続してあります。

実際の配線は以下のようにしています。※画像をクリックすると拡大表示。


たぶん、ICSP端子を使っても良いと思うのですが、一般的な端子を使用するようにしています。

配線が終了後も再度配線のチェックをしておきましょう。

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

最終確認です。
  • MightyCoreが正常にインストールされている
  • ミスなく配線されている
問題がなければAVRライター化したArduinoにUSBを接続し、Arduino IDEを起動して以下に進んで下さい。

この際、先ほどの"ArduinoISP"のスケッチが開いた状態でも問題ありません。
  1. ボードの選択

    "ツール" → "ボード" → "ATmega32"を選択。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "Arduino/Genuino Uno"
    ▶︎
    シリアルポート: "接続しているポート"
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む

    MightyCore
    ATmega1284
    ATmega644
    ATmega324
    ATmega164
    ATmega32
    ATmega16
    ATmega8535


  2. クロックの選択

    "ツール" → "Clock" → "8 MHz internal"を選択。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート: "接続しているポート"
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    ✓16 MHz external
    20 MHz external
    18.432 MHz external
    12 MHz external
    8 MHz external
    8 MHz internal
    1 MHz internal

    基本的に他("1 MHz internal"除く)を選択すると書込み出来ない状態となるので注意して下さい。

  3. シリアルポートの選択

    "ArduinoISP"で書込みを行った後に続けて作業すると、シリアルポートは既に選択された状態になっているかと思いますが、確認を兼ねて再度選択しておきます。

    "ツール" → "シリアルポート" → "Arduinoと接続しているポート"を選択します。

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート: "接続しているポート"
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    シリアルポート
    関係ないポート
    関係ないポート
    ✓Arduinoと接続しているポート

    実際には、"COM~"とか"/dev/cu.useb~"などの表記となります。
      
  4. 書込み装置の選択

    "ツール" → "書込み装置" → "Arduino as ISP"を選択

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート: "接続しているポート"
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む
    AVR ISP
    ✓AVRISP mkII
    ArduinoISP
    ArduinoISP.org
    USBasp
    Parallel Programmer
    Arduino as ISP

    似たような装置名があるので注意しましょう。

  5. ブートローダに書き込む

    "ツール" → "ブートローダを書き込む"を選択

    ツール
    ヘルプ
    自動整形
    ⌘T
    スケッチをアーカイブする

    エンコーディングを修正

    シリアルモニタ
    ⇧⌘M
    シリアルプロッタ
    ⇧⌘L

    Wifi101 Firmware Updater


    ボード: "ATmega32"
    ▶︎
    Pinout: "Standard"
    ▶︎
    Clock: "16 MHz external"
    ▶︎
    Compiler LTO: "Disabled (default)"
    ▶︎
    BOD: "2.7v"
    ▶︎
    シリアルポート: "接続しているポート"
    ▶︎
    ボード情報を取得


    書込み装置: "AVRISP mkII"
    ▶︎
    ブートローダを書き込む

検証、ブートローダの書込みが行われ"ブートローダの書き込みが完了しました。"の表示が出れば書込みは完了となります。
この時、ブレッドボード上に取り付けたLEDが点滅状態となっているかと思いますので、そちらも確認しておいて下さい。

➡︎
⬆︎
⬇︎
ArduinoISP
  1. // ArduinoISP
  2. // Copyright (c) 2008-2011 Randall Bohn
  3. // If you require a license, see
  4. // http://www.opensource.org/licenses/bsd-license.php
  5. //
  6. // This sketch turns the Arduino into a AVRISP using the following Arduino pins:
  7. //
  8. // Pin 10 is used to reset the target microcontroller.
  9. //
  10. // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
  11. // with the target. On all Arduinos, these pins can be found
  12. // on the ICSP/SPI header:
  13. //
  14. //               MISO °. . 5V (!) Avoid this pin on Due, Zero...
  15. //               SCK   . . MOSI
  16. //                     . . GND
  17. //
  18. // On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as
  19. // digital pin 11, 12 and 13, respectively. That is why many tutorials instruct
  20. // you to hook up the target to these pins. If you find this wiring more
  21. // practical, have a define USE_OLD_STYLE_WIRING. This will work even when not
  22. // using an Uno. (On an Uno this is not needed).
  23. //
  24. // Alternatively you can use any other digital pin by configuring
  25. // software ('BitBanged') SPI and having appropriate defines for PIN_MOSI,
  26. // PIN_MISO and PIN_SCK.
  27. //
  28. // IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as
  29. // the programmer, make sure to not expose any of the programmer's pins to 5V.
  30. // A simple way to accomplish this is to power the complete system (programmer
  31. // and target) at 3V3.
  32. //
  33. // Put an LED (with resistor) on the following pins:
  34. // 9: Heartbeat - shows the programmer is running
  35. // 8: Error - Lights up if something goes wrong (use red if that makes sense)
  36. // 7: Programming - In communication with the slave
  37. //
ブートローダの書き込みが完了しました。

avrdude done.  Thank you.

以上でATmega32a-PUの準備は完了となります。
ブレッドボードからATmega32a-PUを抜き、Z80-MBCのボードへと挿し換えて次の作業の準備をしましょう。

0 件のコメント:

コメントを投稿