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ボタンだけです。他は使わなくても大丈夫です。

avr studio 1

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

avr studio 2

- 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 studio 3


- AVR Fuses タブ

4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。

5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。

avr studio 4

ちなみに、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で書いたプログラムが書き込めました。

avr studio 4


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