Arduinoとしてスケッチの書込みやシリアルモニタで通信できるようにするには、ブートローダを書き込む必要があります。
以下で、その手順を解説します。
1. 準備
- Arduino
ブートローダーを書き込むためだけに使用します。
私はUNO互換機を使用しましたが、5V駆動でSPI(SCK、MISO、MOSI)ポートへのアクセスが出来ればUNO以外の機種でも問題ありません。 - Arduino IDE 1.6.4以降
1.8.5で動作しました。 - MightyCore
ATmega32を使うには必須となります。
- ブレッドボード
- 680Ω、10kΩの抵抗Z80-MBCを組んだ時点での余りを流用します。
秋月電子通商で購入していれば、100本入りのパックなので大量に余っているかと思います。
カーボン抵抗 10kΩ 1/6(100本入)
カーボン抵抗 680Ω 1/6(100本入) - 0.1μFのコンデンサこちらもZ80-MBCを組んだ際に1本余っているものを使用します。
0.1μF50V5mm(10個入) - LEDなくても問題ないです。ブートローダの書き込みの終了がわかりやすいぐらい?
3mm赤色LED - ジャンパワイヤー10〜12本あれば良いかと思います。
ブレッドボード・ジャンパーワイヤ(オス-オス)セット
2. ArduinoをAVRライターにする
最初に、ArduinoのI/Oポートへ何も接続しない状態でPCとUSB接続します。
Arduino IDEを起動し、
- 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
- ボードの選択
"ツール" → "ボード"→ "Arduino/Genuino Uno"を選択。
※ここではArduino UNOを使用していますが、任意の機種を選択して下さい。
ツールヘルプ自動整形⌘Tスケッチをアーカイブする
エンコーディングを修正
シリアルモニタ⇧⌘Mシリアルプロッタ⇧⌘L
Wifi101 Firmware Updater
ボード: "Arduino/Genuino Uno"▶︎シリアルポート:▶︎ボード情報を取得
書込み装置: "AVRISP mkII"▶︎ブートローダを書き込むボードマネージャー
Arduino AVRボードArduino Yún✓Arduino/Genuino UnoArduino Duemilanove or DiecimilaArduino Nano
- シリアルポートの選択
"ツール" → "シリアルポート"→ "Arduinoと接続しているポート"を選択。
"Arduinoと接続しているポート"は、"COM~"とか"/dev/cu.useb~"などの表記となります。
ツールヘルプ自動整形⌘Tスケッチをアーカイブする
エンコーディングを修正
シリアルモニタ⇧⌘Mシリアルプロッタ⇧⌘L
Wifi101 Firmware Updater
ボード: "Arduino/Genuino Uno"▶︎シリアルポート:▶︎ボード情報を取得
書込み装置: "AVRISP mkII"▶︎ブートローダを書き込むシリアルポート関係ないポート関係ないポートArduinoと接続しているポート
- マイコンボードに書き込む
マイコンボードへの書込みを行う手立ては3つあります。
- "マイコンボードに書き込む"ボタン
Arduino IDEの画面上部にある"マイコンボードに書き込む"を押す。
-
メニューの"マイコンボードに書き込む"
"スケッチ" → "マイコンボードに書き込む"を選択。
スケッチツールヘルプ検証・コンパイル⌘Rマイコンボードに書き込む⌘U書込装置を使って書き込む⇧⌘Uコンパイルしたバイナリを出力⌥⌘S
スケッチのフォルダを表示⌘Kライブラリをインクルード▶︎ファイルを追加
- ショートカットキー
Ctrl+UWindowsの場合⌘+UMacの場合
上記のいずれかで書込みを行って下さい。
- "マイコンボードに書き込む"ボタン
- // ArduinoISP
- // Copyright (c) 2008-2011 Randall Bohn
- // If you require a license, see
- // http://www.opensource.org/licenses/bsd-license.php
- //
- // This sketch turns the Arduino into a AVRISP using the following Arduino pins:
- //
- // Pin 10 is used to reset the target microcontroller.
- //
- // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
- // with the target. On all Arduinos, these pins can be found
- // on the ICSP/SPI header:
- //
- // MISO °. . 5V (!) Avoid this pin on Due, Zero...
- // SCK . . MOSI
- // . . GND
- //
- // On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as
- // digital pin 11, 12 and 13, respectively. That is why many tutorials instruct
- // you to hook up the target to these pins. If you find this wiring more
- // practical, have a define USE_OLD_STYLE_WIRING. This will work even when not
- // using an Uno. (On an Uno this is not needed).
- //
- // Alternatively you can use any other digital pin by configuring
- // software ('BitBanged') SPI and having appropriate defines for PIN_MOSI,
- // PIN_MISO and PIN_SCK.
- //
- // IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as
- // the programmer, make sure to not expose any of the programmer's pins to 5V.
- // A simple way to accomplish this is to power the complete system (programmer
- // and target) at 3V3.
- //
- // Put an LED (with resistor) on the following pins:
- // 9: Heartbeat - shows the programmer is running
- // 8: Error - Lights up if something goes wrong (use red if that makes sense)
- // 7: Programming - In communication with the slave
- //
●
ボードへの書き込みが完了しました。
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が正常にインストールされている
- ミスなく配線されている
この際、先ほどの"ArduinoISP"のスケッチが開いた状態でも問題ありません。
- ボードの選択
"ツール" → "ボード" → "ATmega32"を選択。
ツールヘルプ自動整形⌘Tスケッチをアーカイブする
エンコーディングを修正
シリアルモニタ⇧⌘Mシリアルプロッタ⇧⌘L
Wifi101 Firmware Updater
ボード: "Arduino/Genuino Uno"▶︎シリアルポート: "接続しているポート"▶︎ボード情報を取得
書込み装置: "AVRISP mkII"▶︎ブートローダを書き込む
MightyCoreATmega1284ATmega644ATmega324ATmega164ATmega32ATmega16ATmega8535
- クロックの選択
"ツール" → "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 external20 MHz external18.432 MHz external12 MHz external8 MHz external8 MHz internal1 MHz internal
基本的に他("1 MHz internal"除く)を選択すると書込み出来ない状態となるので注意して下さい。
- シリアルポートの選択
"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~"などの表記となります。
- 書込み装置の選択
"ツール" → "書込み装置" → "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 mkIIArduinoISPArduinoISP.orgUSBaspParallel ProgrammerArduino as ISP
似たような装置名があるので注意しましょう。 - ブートローダに書き込む
"ツール" → "ブートローダを書き込む"を選択
ツールヘルプ自動整形⌘Tスケッチをアーカイブする
エンコーディングを修正
シリアルモニタ⇧⌘Mシリアルプロッタ⇧⌘L
Wifi101 Firmware Updater
ボード: "ATmega32"▶︎Pinout: "Standard"▶︎Clock: "16 MHz external"▶︎Compiler LTO: "Disabled (default)"▶︎BOD: "2.7v"▶︎シリアルポート: "接続しているポート"▶︎ボード情報を取得
書込み装置: "AVRISP mkII"▶︎ブートローダを書き込む
この時、ブレッドボード上に取り付けたLEDが点滅状態となっているかと思いますので、そちらも確認しておいて下さい。
- // ArduinoISP
- // Copyright (c) 2008-2011 Randall Bohn
- // If you require a license, see
- // http://www.opensource.org/licenses/bsd-license.php
- //
- // This sketch turns the Arduino into a AVRISP using the following Arduino pins:
- //
- // Pin 10 is used to reset the target microcontroller.
- //
- // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate
- // with the target. On all Arduinos, these pins can be found
- // on the ICSP/SPI header:
- //
- // MISO °. . 5V (!) Avoid this pin on Due, Zero...
- // SCK . . MOSI
- // . . GND
- //
- // On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as
- // digital pin 11, 12 and 13, respectively. That is why many tutorials instruct
- // you to hook up the target to these pins. If you find this wiring more
- // practical, have a define USE_OLD_STYLE_WIRING. This will work even when not
- // using an Uno. (On an Uno this is not needed).
- //
- // Alternatively you can use any other digital pin by configuring
- // software ('BitBanged') SPI and having appropriate defines for PIN_MOSI,
- // PIN_MISO and PIN_SCK.
- //
- // IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as
- // the programmer, make sure to not expose any of the programmer's pins to 5V.
- // A simple way to accomplish this is to power the complete system (programmer
- // and target) at 3V3.
- //
- // Put an LED (with resistor) on the following pins:
- // 9: Heartbeat - shows the programmer is running
- // 8: Error - Lights up if something goes wrong (use red if that makes sense)
- // 7: Programming - In communication with the slave
- //
●
ブートローダの書き込みが完了しました。
avrdude done. Thank you.
以上でATmega32a-PUの準備は完了となります。
ブレッドボードからATmega32a-PUを抜き、Z80-MBCのボードへと挿し換えて次の作業の準備をしましょう。
0 件のコメント:
コメントを投稿