2009/11/30: AVR studioでArduinoのプログラムをAVRに書き込む方法
Arduinoでデモを作って、AVRで実装したいという人向けの情報で、Arduinoや、gainerしか使ったことがなくて、AVRに直接プログラムを書き込んだことがない人向けの説明です。
プログラム自体はArduinoで開発して、書き出されたHEXファイルというAVRで動くファイルを、AVRに書き込む方法を紹介します。
AVRライタの紹介などはこちら。
Karappo Interaction Lab. » マイコン初心者のAVR入門
■Arduino IDEでやること
1. Arduinoで動くプログラムを書く。
Arduinoで動けば、AVRでも動くはずなので、普通にArduinoの書き方で書けばOKです。
2. Arduino IDEで、Uploadボタンを押す。
Uploadは失敗してもOKです。Uploadボタンを押した時点で、最終的にAVRに書き込むHEXファイルというファイルが書き出されます。
■AVR studioでやること
- AVR studioのインストーラはこちら
基本的にArduinoでプログラムを開発している場合、AVR studioで使うボタンは下にある画像の、Connectボタンと、AVRボタンだけです。他は使わなくても大丈夫です。

1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。

- AVR Main タブ
2. ツールバーにある、AVRボタンを押します。ここの画面で、AVRとの通信の仕方の設定、プログラムの書き込み、AVRの設定をすることができます。
3. Mainタブで、まずAVRのチップを選択します。ATmega328PやATmega168Pなど。また、Programming Modeは、ISP mode、ISP Frequencyは、125kHzなどに設定。ISP Frequencyはクロックの1/4以下にする必要があるそうですが、あまり遅くしすぎるとAVRへの書き込み自体できなくなってしまうそうなので、とりあえずよく分からない場合は、125kHzにしておくのが無難かと思われます。
ちなみに買ってきたばかりのAVRチップは内蔵8MHzの発振なので、周波数は2MHz以下にする必要がありますが、ネットでいろいろ見た限りでは目安として、1/16ぐらいの方が無難な気がします。16MHzで、1MHz。8MHzで、500kHz。

- AVR Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。

ちなみに、Readというボタンを押すと、AVRにある設定をAVR studioに読み込むことができます。
- AVR Programタブ
6. Programタブで、Deviceというエリアにある、Erase device before flash programmingにチェックが入っているかどうか確認します。ここにチェックが入っていないと、AVRにプログラムが書き込めないことがあります。
7. Programタブで、Flashというエリアにある、Input HEX Fileというフォームから、Arduinoで書き出したHEXファイルを選択します。HEXファイルは、Arduinoのプロジェクトのフォルダのなかにある、appletフォルダの中です。プロジェクト名.cpp.hexというファイルがそうです。ファイルを選択したら、Flashというエリア内にある、Programボタンを押します。これで、AVRにArduinoで書いたプログラムが書き込めました。

自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。
プログラム自体はArduinoで開発して、書き出されたHEXファイルというAVRで動くファイルを、AVRに書き込む方法を紹介します。
AVRライタの紹介などはこちら。
Karappo Interaction Lab. » マイコン初心者のAVR入門
■Arduino IDEでやること
1. Arduinoで動くプログラムを書く。
Arduinoで動けば、AVRでも動くはずなので、普通にArduinoの書き方で書けばOKです。
2. Arduino IDEで、Uploadボタンを押す。
Uploadは失敗してもOKです。Uploadボタンを押した時点で、最終的にAVRに書き込むHEXファイルというファイルが書き出されます。
■AVR studioでやること
- AVR studioのインストーラはこちら
基本的にArduinoでプログラムを開発している場合、AVR studioで使うボタンは下にある画像の、Connectボタンと、AVRボタンだけです。他は使わなくても大丈夫です。

1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。

- AVR Main タブ
2. ツールバーにある、AVRボタンを押します。ここの画面で、AVRとの通信の仕方の設定、プログラムの書き込み、AVRの設定をすることができます。
3. Mainタブで、まずAVRのチップを選択します。ATmega328PやATmega168Pなど。また、Programming Modeは、ISP mode、ISP Frequencyは、125kHzなどに設定。ISP Frequencyはクロックの1/4以下にする必要があるそうですが、あまり遅くしすぎるとAVRへの書き込み自体できなくなってしまうそうなので、とりあえずよく分からない場合は、125kHzにしておくのが無難かと思われます。
ちなみに買ってきたばかりのAVRチップは内蔵8MHzの発振なので、周波数は2MHz以下にする必要がありますが、ネットでいろいろ見た限りでは目安として、1/16ぐらいの方が無難な気がします。16MHzで、1MHz。8MHzで、500kHz。

- AVR Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。

ちなみに、Readというボタンを押すと、AVRにある設定をAVR studioに読み込むことができます。
- AVR Programタブ
6. Programタブで、Deviceというエリアにある、Erase device before flash programmingにチェックが入っているかどうか確認します。ここにチェックが入っていないと、AVRにプログラムが書き込めないことがあります。
7. Programタブで、Flashというエリアにある、Input HEX Fileというフォームから、Arduinoで書き出したHEXファイルを選択します。HEXファイルは、Arduinoのプロジェクトのフォルダのなかにある、appletフォルダの中です。プロジェクト名.cpp.hexというファイルがそうです。ファイルを選択したら、Flashというエリア内にある、Programボタンを押します。これで、AVRにArduinoで書いたプログラムが書き込めました。

自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。