ちょっと昔の基板を引っ張り出してきました。
ATmega328 テストベッド基板
以前の記事で製作したATtiny2313Aテストベッドと共に製作していたのですが、ATmega328内蔵クロックで動作するArduinoのテストで引っ張り出してきました。
元々デジット主催のAVRマイコン電子工作製作会などで使う8MHzの内蔵発振器で動作させるための構成だったので、これを使って外部の水晶発信子を使わず内蔵発振器で動作するブートローダーを書き込んでArduino化したATmega328Pの確認をします。
ファームウェアはGitHubでMCUdudeとして公開されている中のMiniCoreを使用します。
今回調べた内容を備忘録的にArudino化するまでの概要を記載しておきます(MiniCoreを使うための操作の詳細はこちら(英語)を参照してください)。以下macOS環境でのArduino IDEにての操作になります。
Arduino → Preferences…で環境設定を開き、追加のボードマネージャのURLに以下のURLを入力しOKボタンで設定を反映させます。
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
MiniCore以外のMegaCoreやMicroCoreも追加する場合は入力欄の右端にあるボタンでダイアログを開き、複数行に必要なURLの入力を行い、環境設定をOKボタンで閉じます。
追加のボードをインストールするため、ボードマネージャを開き”MiniCore”を検索欄に入力してMiniCoreのボードが表示されたらインストールを行います。
正常にインストールされるとツールメニューのボード欄にMiniCoreが追加されます。
ボードリスト
このようにボードの選択欄にATmega328などのMiniCore対応のボード(というより単独MPU)が選択できるようになりますので、今回の対象MPUであるATmega328を選択します。
ボード選択後にATmega328Pの設定を目的に合うようボードの設定を変更します。
ボードを変更するとボードの設定項目がこのように変化しますので、Clockを”Internal 8MHz”を選択、ブートローダーを使用するのでBootloaderは”Yes (UART0)”を選択します。他の項目についてもBODなど自分の目的に合う設定を選択してください。
設定が確定したらAVR ISPシールドなどを利用してMiniCore 328Pのブートローダーを書き込みます。
正常に書き込みが終了すればテストベッドのソケットにMPUを挿入し、USB〜UARTアダプタを使って必要な結線を行い正常にスケッチが書き込めるかどうかを確認します。無事書き込みが終了しテスト動作が確認できれば以後はmacOS環境でもIDEを使ってUSB〜UART経由でスケッチ書き込みが行えます。
外部の発信子を必要としないので時間関連に厳密さが求められるような用途には向きませんが、外付け回路が不要でMPU単独で動作し、利用できるI/OもPB6(pin 20)とPB7(pin21)の2本が増えます。今までAVR StudioやMPLAB X IDEなどでデバイスの初期設定からフルスクラッチしているプログラム開発からArduinoライブラリを利用できるのでかなり楽なプログラム開発環境が整います。もちろんArduinoとして動作するための最低限のプログラムエリアが必要ですが、1ワードのプログラムエリアと戦うような状況でなければ問題ないでしょう。