Arduino M0 ProをAtmelStudioから使う
はじめに
Arduino M0 Proを買いました。
発売当初、「5000円は高いな~」と思って購入を見送ったのですが、先日お世話になっている師匠からお勧めされると欲しくなってしまい、購入してしました。
師匠によるお勧めの理由は、
・Arduino M0 Proに搭載のARMマイコンが多機能な割に安価で入手しやすい。
⇒UART、SPI、I2C、PWMのほかUSB Hostも登載のうえ、秋月でチップ単体が500円程で販売されている。
・Arduino M0 Proにはデバッガ(EDBG)が付いているので、これを使えば開発がし易い。
⇒AtmelStudioでデバッグ実行が可能。
というようなことでした。
今回はこのArduino M0 Proの開発環境をAtmelStudioで立ち上げてみたので、そのやり方をまとめておこうと思います。
Arduino IDEではなく、AtmelStudioを使います。
この記事の実行環境は下記のとおりです。
Windows7 x64
AtmelStudioバージョン 7.0.634
Arduino M0 Proファームウェアバージョン 2.10(初期は1.1?)
開発環境の構築
AtmelStudioのインストール
AtmelStudioのインストーラを入手します。
公式ページAtmel StudioでWeb/Offlineどちらかのインストーラ項目のCDマークをクリックします。
ページが変わった先で自分のメールアドレスを入力することで、入力したアドレス向けにダウンロードリンクが送られてきます。
Arduino M0 Proのファームウェアアップデート
AtmelStudioを起動し、Arduino M0 Proを接続します。
Arduinoを接続した初回にFirmwareの更新を行うダイアログが出現します。
私は何も考えず、更新ボタンを押しましたが、失敗する場合もあるようです。
ファームウェアの更新は手動でも行うことができますので、失敗するようなら手動実行するのが良いでしょう。
[ToDo:上記の方法について加筆すること]
プログラム書き込みの方法と設定
早速開発しようとしたところ、プログラムの書き込みについて、途中行き詰まったことが2点ありました。
開発方法の紹介に入る前に、行き詰まった内容とその解決法をご紹介します。
プロジェクトの新規作成
AtmelStudioを起動、メニューのNew→Project...→出現するNew Projectダイアログ上でGCC ASF Board Projectを選択してOK
Board Selectionダイアログに変わるので、Arduino Mo Proに使われているATSAMD21G18Aを選択、User Board Template - ATSAMD21G18Aを押してOK
プロジェクトが生成されます。
Atmel Software Framework(ASF)ライブラリ追加
Atmel Software Framework(以下、ASF)というデバイスドライバ等のフレームワークが提供されています。
ASFには、LED点滅に必要なgpio操作や時間待ちを行うドライバが存在しますので、プロジェクトに追加します。
メニューのASF→ASF Wizard→出現するASFWizardタブで「Port - GPIO Pin Control(Driver)」、「Delay routines(service)」をAdd、Applyを押す
確認ダイアログが出るのでOK
main.cでincludeされているasf.h内部で各ドライバのモジュールがincludeされているのがわかります。
Lチカ実装
main.cのmain関数内部の「/* Insert application code here, after the board has been initialized. */」行の下に下記を追加します。
int main (void) { system_init(); /* Insert application code here, after the board has been initialized. */ delay_init(); struct port_config pin_conf; port_get_config_defaults(&pin_conf); pin_conf.direction = PORT_PIN_DIR_OUTPUT; port_pin_set_config(PIN_PA17, &pin_conf); while (1) { port_pin_set_output_level(PIN_PA17, true); delay_ms(500); port_pin_set_output_level(PIN_PA17, false); delay_ms(500); } }
gpio
公式ドキュメントQuick Start Guide for PORT - Basic にサンプルコードが書いてあるので、そのまま書き写します。
Arduino M0 proは回路図をみるとマイコンのPA_17が基板上「L」と書かれた横のLEDと結線されているので、これを使用します。
delay
delayはdelay_msだけではビルドは通っても時間待ちをしてくれませんでした。
delay_initを行うことが必要なようです。
プログラム書込
注意:「プログラム書き込みの方法と設定」のFuse設定を行っていないとArduinoにプログラムを書き込みできません。
プログラムをビルド、Arduino M0 ProをPCと接続した状態で
メニューのTool→Device programing→出現するDevice programinngダイアログ上部のApplyを押し、左メニューからMemoriesを選択
Flashの項目のProgramボタンを押すと、選択中のelf(ビルドして生成されていたもの)がArduinoへ書き込まれ、プログラムが開始します。
デバッグ実行
デバッガの選択EDBG FFFF(略)を選択してある状態でプログラムをデバッグ実行することができます。
コードの左横でダブルクリックをすればブレークポイントも設定できます。
このあたりはVisual Studioの機能のままですね。
デバッグ実行と同時に自動でプログラム書き込みをしてくれると大変便利なのですが、今のところそういった設定変更の方法はわかっていません。
わかり次第追記したいと思います。
参考Webページ
ASFの公式ドキュメンント
ASF Source Code Documentation
ASFの使用方法
Atmel Studio入門:ASFのモジュール導入方法 | easy labo
プログラムを実行できなくて困った時に調べて参考になった情報
Arduino Zero Pro EDBG unknown serial number | AVR Freaks
Verify Error with SAMD21G18A | AVR Freaks
Arduino M0 Proの回路図
http://download.arduino.org/products/ZEROPRO/Arduino-Zero-Pro-V3-SCH.pdf