ArduinoISPを汎用AVRライタとして使う(3)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) 次のページへ
2015年11月12日 公開。

7.Atmel StudioでArduinoISPを使う

この章では、Atmel社純正のソフトウェア開発ツールのAtmel Studio 7上で、ArduinoISPを使ってAVRマイコンにプログラムを書き込む方法を解説します。読者としてはAtmel Studioの使い方をある程度理解している人を想定していますので、Atmel Studioのインストール方法などについては触れません。また、Windows環境を想定しています。

7-1.外部ツールとしてArduinoISPを登録する方法

Atmel StudioからArduinoISPを使ってAVRマイコンにプログラムを書き込むには、ArduinoISPを外部ツールとしてAtmel Studioに登録します。まず、Tools→External Tools...メニューを選んでください。

図27、Tools→External Tools...メニューを選ぶ
図27、Tools→External Tools...メニューを選ぶ

そうすると、次の様なウィンドウが開きます。

図28、External Toolsウィンドウ
図28、External Toolsウィンドウ

この画面で、Titleの欄に例えばArduinoISP (ATmega328P, COM8)などと、登録内容が分かりやすい名称を入れてください。基本的に、使用するマイコンやヒューズビットなどが変われば、別のツールとして登録する必要がありますので、それらの設定もある程度分かる名称にする方が良いと思います。(この点は、プロジェクトのフォルダに設定ファイルを用意すると回避できる可能性もありますが、将来の課題としておきます)

Commandの欄には、avrdudeの実行ファイル(avrdude.exe)を指定します。ファイル名をフルパスで入力するのは大変なので、欄の右側の...ボタンをクリックすると、ダイアログボックスでファイルを選択できます。

図29、ダイアログボックスでavrdude.exeを指定
図29、ダイアログボックスでavrdude.exeを指定

私の場合は、C:\WinAVR-20100110というフォルダにWinAVRをインストールしています。このフォルダの中のbinというフォルダにavrdude.exeがあります。

Extenal ToolsウィンドウのArgumentsの欄には、avrdudeのコマンドラインオプションを指定します。例えば、私は次の様に設定しています。

-c avrisp -P COM8 -b 19200 -p m328p -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:i -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x05:m

上の設定例で、パソコンの環境やプロジェクトの内容によって変更すべき部分をイタリックで示しています。

コマンドラインオプションを、前から順に説明していきます。

-c avrispはArduinoISPをプログラムライタとして使う事を意味しています。

-P COM8はプログラムライタとCOM8のシリアルポートで通信する事を意味しています。この部分は、自分の環境に合わせて書き換える必要があります。

-p m328pはターゲットのAVRマイコンがATmega328Pである事を意味しています。この部分は、開発ターゲットのマイコンの種類に応じて書き換える必要があります。

-U flash:w:$(ProjectDir)Debug\$(TargetName).hex:iは、マイコンに書き込むHEXファイルを指定している部分です。$(ProjectDir)の部分は、現在使用しているAtmel studioのプロジェクトのパスに置き換わります。また、$(TargetName)はビルドされたファイルの名称(パスや拡張子は含まず)に置き換わります。

デバッグビルドを前提にHEXファイルのパスを指定していますが、リリースビルドの場合は、パス中のDebugの部分をReleaseに書き換える必要があります。

なお、$(ProjectDir)や$(TargetName)の部分は、この通り入力しなくても、Argumentsの欄の三角印のボタンを使って、メニュー選択形式で簡単に入力できます。

図30、メニュー選択で$(TargetName)を入力する
図30、メニュー選択で$(TargetName)を入力する

-U lfuse:w:0xff:m-U hfuse:w:0xde:m-U efuse:w:0x05:mは、ヒューズビットの設定を行っている部分です。この部分は、開発ターゲットのマイコンのヒューズビットの設定に合わせる必要があります。

External Window のInitial directoryの欄は、空白で結構です。

その下のUse Output windowはチェックしてください。avrdudeが動作している時に、avrdudeが出力するメッセージをAtmel StudioのOutputウィンドウに表示できます。

以上の様に設定できたら、最後にOKボタンをクリックすると、ArduinoISPが外部ツールとして登録されます。

広告

7-2.ArduinoISPでプログラムを書き込む方法

それでは、登録したArduinoISPで、プログラムをマイコンに書き込んで見ましょう。

まず、ArduinoISPのライターを、プログラムが書き込める状態に準備してください。Arduino Uno用ブートローダライタシールドArduino用ブートローダ/スケッチライタを使う場合は、準備の仕方について、前のページで解説しています。

次に、書き込みたいプログラムをビルドしてください。

最後に、ライターとAVRマイコンが正しく接続されている(あるいはAVRマイコンが正しくライタのソケットに挿入されている)事を確認後、Toolsメニューから、登録したArduinoISPを選ぶと、プログラムの書き込みが始まります。

図31、登録したArduinoISPを選択する
図31、登録したArduinoISPを選択する

avrdudeの動作中のメッセージはOutputウィンドウに表示されます。

図32、avrdudeのメッセージはOutputウィンドウに表示される
図32、avrdudeのメッセージはOutputウィンドウに表示される

7-3.Arduino Uno用ブートローダライタシールドやArduino用ブートローダ/スケッチライタのICSPヘッダを使う

Arduino Uno用ブートローダライタシールドArduino用ブートローダ/スケッチライタにはICSPヘッダがあります。

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
写真9、Arduino Uno用ブートローダライタシールドのICSPヘッダ
↑ 画像をクリックすると拡大
写真9、Arduino Uno用ブートローダライタシールドのICSPヘッダ
写真10、Arduino用ブートローダ/スケッチライタのICSPヘッダ
↑ 画像をクリックすると拡大
写真10、Arduino用ブートローダ/スケッチライタのICSPヘッダ

これらのライタ基板のICSPヘッダとターゲット基板上のICSPヘッダとをケーブルで接続すると、基板上に実装したマイコンに対してプログラムを書き込む事ができるようになります。ただAVRISP mkIIの様に、ターゲット基板の電源電圧に合わせた信号レベルでプログラムを書き込む機能はないので、Arduino Uno用ブートローダライタシールドの場合は5V、Arduino用ブートローダ/スケッチライタの場合は3.3Vまたは5V(USBシリアル変換器の電圧に依存)で動作するターゲット基板のみが、プログラムの対象になります。

AVRISP mkIIにない機能として、ICSPヘッダからターゲット基板へ電源を供給する能力があります。SUPPLY TARGETと表示のある2ピンヘッダ(Arduino Uno用ブートローダライタシールドの場合CN2、Arduino用ブートローダ/スケッチライタの場合CN9)にジャンパピンを差し込んでおけば、ICSPヘッダのVCCピン(2番ピン)から、ターゲット基板に電源を供給します。

手前味噌にはなりますが、最近では、Atmel Studioで開発する時でも、AVRISP mkIIよりもArduino用ブートローダ/スケッチライタを使う事が多くなりました。ターゲット基板に電源を供給できる点と、プログラムの書き込み状態を音で確認できる点が便利だからです。新規に開発を始める人にとっては、AVRISP mkIIよりも安価である事もメリットになるでしょう。

一方で、3.3Vと5V以外の電圧で動作するターゲット基板への書き込みが必要な場合は、AVRISP mkIIが必要になるでしょう。Atmelの純正ライタなので、外部ツールとして登録しなくてもAtmel Studioから使え、Atmel Studio上での作業が簡単な点も魅力です。

目次へ  前のページへ (1) (2) (3) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。