この記事の内容は、こんな感じ
- Atmel Studio7のインストール手順
- Arduino IDEのスケッチをインポートする方法
- シミュレーションモードでデバッグする方法
- ソフト書き込み方
Arduino IDEより本格的な開発環境を導入
Arduino IDEは、マイコンプログラムの難しい&面倒な箇所を良い感じにマスクしてくれていて、気軽に使える点では画期的なツールだけど、複雑なプログラムを開発したいとか、なれてきたから、動かすだけでなく中身もきちんと理解して、専門性を身につけたいって人にはちょっと向いてない。
なので、もうちょっと高度なことができるツールに乗り換えていったほうがいい。
他のマイコンベンダーが提供している一般的なIDEは、通常のデバッグ機能もちろん、CPUのメモリマップ上のレジスタ値を確認できたり、自分のプログラムがマイコンにどんな振る舞いをさせているかを理解するには役立つ機能が多い。
Arduino IDEに比べると、これらは、敷居は高いけど、試しに導入していっても損はないと思われる。別にどっちを選ばなくちゃダメとかではなくて、用途に分けて、使い分けていければ、良いだけなので。
んな理由で、今回はAtmel studioを導入したので、内容をまとめてみた。
ATMEL Studioとは
自分の持っているArduino UNOはボード上にAVRマイコン(ATMega328p)を搭載してる。
ATMELって会社はこのAVRマイコンの開発メーカで、その会社が提供しているのが、このATMEL Studioという名前のIDE。AVRマイコンを搭載したボード用に用意されているツールになってるので、これを使えばArduino限定って訳ではなくて、色々なボードを開発できる。
Arduino IDEよりも開発の幅がひろがるってことか。
いまは、version7が最新 (2020年7月現在)らしい。この記事では、これからAS7って呼ぶ。
AS7は、Arduino IDEで作成したスケッチをインポートする機能もあって、いままで作ったプログラムを引き継いで、開発できる。
これまで作成したスケッチが無駄にならなくて、よいね。
また、下のようなAtmel ICEを使えば、ICSPというコネクタ経由でデバッグもできるようになる。でも値段は、秋月電子で1万円ぐらい。高いわ。
AS7にはシミュレーション機能というのがあって、仮想のボード上で動作するソフトウェアのデバッグ作業ができる。デバッガを手に入れられなくても、この機能を使えば、Arduino IDEと比べても、かなり効率的にプログラムの検証ができて、AS7の機能の恩恵を受けられそう。
インストール方法
以下のサイトにいって、ページの下側にWebインストーラとあるので、これを選択して、インストーラをダウンロードする。MACユーザには残念だけど、現行のソフトはwindow OS限定。
https://www.microchip.com/mplab/avr-support/atmel-studio-7
ちなみになんでMicroChip社のページなの?って思ったけど、2016年に買収されていた。FreescaleとNXPもそうだけど、企業買収が多すぎて、混乱する…
基本的にNEXT連打で進んでいけば、問題なくインストールできた。
インストール完了後、AS7を起動する。下のようなメイン画面が表示される。
ソフトウェアはvisual studioベースに開発されたもので、画面のレイアウトもかなり似てる。開発はWPFベースだっけかな?確か。早速、スケッチのインポートをしてみる。
スケッチのインポート
メニュー → File → New → Projectでプロジェクトを新規作成する。
下の画面で、左側の言語設定をC/C++として、Create project from Arduino sketchを選択する。
すると、スケッチインポート用のダイアログが表示されるので、以下のように設定する。ここでは、サンプルのスケッチ(Blink.ino)を例にしてみた。
スケッチファイルとArduino IDE Pathを設定したあとに、Boardのリスト一覧が表示されるので、使っているボードを選択して、OKボタンで進む。ちなみに、ArduinoはWindowsのApp版ではなく、通常のインストーラ版を使用してないとダメ。
ちなみに、自分はUnoしか持ってないので、Unoを選択した。
無事インポートに成功したら、上のような画面が見られる。sketchで作成したコードは、どこにいったか?というと右側のSolution ExplorerのBlinkフォルダの下のSketch.cppというファイルなっている。これをクリックして中身をみると、お馴染みのsetupとloop関数をみつけた。
また、このコードの冒頭には、#include <Arduino.h>があって、このヘッダファイル内でArduino IDEで使っていたAPI(digitalWriteとか)が定義されている。なので、これまで使ってた関数は、AS7でも同じように使える。
インポート作業自体はこれで完了。早速、シミュレーション機能を使用してみる。
シミュレーション実行する
メニュー → Project → Blink Propertiesでシミュレーションの設定をする。
Toolを選択して、Selected debugger/programmerでSimulatorを選択する。
下のボタンで、シミュレーションを開始する。
プログラムのビルドエラーなどなければ、以下のようにデバッグモードでプログラムが開始される。
main.cpp内のinit関数ところでプログラムが入力待ちになっていて(黄色のマーカ)、以降はF10キーで一文ずつ実行していけば、デバッグ作業ができる。
プログラムの書き込み方法
AVRDUDEというプログラムを利用すれば、AVRライタなどの専用ツールとかは特に必要なく、プログラムの書き込みができるので、これを利用する。
メニュー → Tools → External Toolsをクリック。
Titleには適当な名前をつけて、AVRDUDEのexeファイルの場所や実行時のオプション設定などを下の画面でする。
具体的には、Commandの項目では、Arduinoのインストールフォルダにある”avrdude.exe”のパスを指定する。(ちなみに、下のは自分のPCの場合)
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe
その次に、Argumentsのところに下のコマンドをコピペする。PCの環境依存があるのは、一行目のコンフィグファイルのパスと、Arduinoに接続しているCOMポート番号なので、注意が必要。自分のPCの環境をチェックして修正すること。
-C “C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf” -p atmega328p -c arduino -P COM3 -b 115200 -U flash:w:”$(ProjectDir)Debug\$(TargetName).hex”:i
プログラムの書き込み結果をコマンドWindow上に表示させたいので、Use Output Window にもチェックをいれておく。
Initial directoryはブランクでOK。
以上で、設定は完了。
メイン画面に戻ると、上のようにToolsバーの下にAVRDUDE_COM3というのが追加されているのがわかる。
早速、インポートしたプロジェクトを書き込んでみる。
ArduinoをPCに接続して、登録したコマンドを実行する。下のようなメッセージが表示されば、無事、プログラムの書き込みが成功した。
以上で簡単だけど、AS7の導入手順はこれで完了。
PS
途中、自分はボードがCOMポートで正常に認識されずに、Bootloaderを書き換えて、最終的には新品ボードまで購入した結果、判明した原因はUSBのコネクタの接触不良でした。
皆さん、コードの確認もわすれずに。
Atmel Studio ばんざい 🙂