itsukichang

フロントエンドが得意なエンジニア.ダーツと旅行とギターが好き

AVR入門 -Win環境構築

最近AVRはじめたので,備忘録的に環境構築から簡単なプログラムをいくつか組むまでの流れを書いてみます.
なかなかまとまった情報が少ないAVRですので,これから始める人の手助けになれば幸いです><
Arduinoと比べてどうなっているか,ということをできるだけ書きます.

必要なもの

Arduinoの場合
  • ハードウェア
    • Arduino本体 (Uno, duemilanove, miniなど): 約3千円
    • usbケーブル: 本体に付属なので0円
    • 電子部品色々: ledとかボタンとかで初期投資500円~1000円
    • 電源: Unoなら7V~12Vのものを用意しましょう.: 1000円くらい

という感じで約4000円くらいで十分に遊べる環境が整います.
逆に言うと,一つのプロダクト内にArduinoを埋め込んでいくと単価が4000円以上になってしまいます.

  • ソフトウェア

インストールするだけ!

AVRの場合
  • ハードウェア

ICです.Arduinoの上にも載っている足がいっぱいついた部品です.
種類がいくつもあります.代表的なものにATTiny2313, ATMega88, ATMega168, ATMega328などがあります.
それぞれスペックや値段が違います.価格はここにあげたものだと100円から300円までくらい.

    • 電子部品色々: これはArduinoと同様.必要なものをそろえましょう.
    • AVRライタ:

プログラマとも呼ばれます.AVRマイコンにプログラムを転送(書き込み)するための機器です.PCとの接続にUSBを使うものとCOMポートを使うものがあります.純正品のAVRISPmk2をはじめ,様々なメーカーから多様なライタが販売されています.また自作することもできます.しかし,はじめは純正品がおすすめです.1000円~3000円くらいで売っています.純正品は秋月電子で3000円.

ライタと部品だけ始めに買ってしまえば,あとはプロダクトの数だけAVRマイコンを増やせばいいのでArduinoと比べた場合のコストは一目瞭然ですね.ただその代わりArduinoより最初の導入や言語の扱い方が難しいのでしっかり勉強する必要があります.

  • ソフトウェア

AVRはアセンブラC言語でプログラミングが可能です.いきなりアセンブラに挑戦するのはちょっと難易度が高いので,はじめはArduinoで書いたプログラムに近いC言語をお勧めします.
C言語で書いたプログラムをコンパイルするために,コンパイラの導入が必要です.
いくつか種類がありますが,WinAVRがお勧めです.WinAVR

コンパイラさえ入れてしまえば,メモ帳でプログラムを書いてコマンドラインからコンパイルすることもできますが,コードの管理や扱いやすさから統合開発環境の使用をお勧めします.AVRマイコンを製造しているAtmel社が提供しているAVR Studioという環境があるのでこれを使いましょう.
AVRStudio
現在(2013/1)のバージョンは6で,名称もAVR StduioからAtmel Studioに変わっています.
Atmel StduioになってからMicrosoft.NET Frameworkを使用しているので結構重いです.
(僕は古いネットブックを使っているので,AVRStudio4を使っています.)

    • 書き込みソフト:

統合開発環境でプログラムを書き,無事コンパイルが完了すると.hexファイルというものが書き出されます.
このhexファイルをライタを使ってAVRマイコンに送る事で初めてプログラムが動作します.
AVRマイコンにhexファイルを書き込むために,純正のライタ(AVRISPmk2)を使っていればAVRStudioを使って開発・書き込みの両方ができるのですが,自作したものや各メーカーが独自に作っているものだと別途書き込みソフトが必要になる場合があります.
その書き込みソフトにavrdudeというものがあるのですが,これはCUIなものではじめての人にはとっつきにくいので,GUI版が開発されています.
GUI版は,千秋ゼミというサイトで,多くの環境とプログラマに対応したもので,現在も日々開発が続けられているものです.
この環境を使ってみたい方はリンク先のサイトを熟読してツールを入手してください.
また,ただツールをDLするだけではなく自分の環境(PCのスペックなど)を沿えた動作報告をすると良いでしょう;)
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/

今回使うもの

ここまででとりあえず必要なものをあげましたが,選択肢が多いのでとりあえず初心者向けに絞って解説します.

とりあえずATTiny2313を買いましょう.

  • AVRライタ

純正のAVRISPmk2を買いましょう.

  • ソフトウェア

WinAVRとAVR Studio(Atmel Stduio)をインストールしましょう.

WinAVR

WinAVR
特に躓くところはないです.

AVR Studio

AVRStudio
こちらも特に問題なくインストールできるはずです.

開発手順

  • 1. ライタのドライバインストール

AVRISPmk2を手に入れたら,まずPCに差し込みましょう.
するとドライバのインストール云々の画面がでるので,自動にインストールを選択して完了するまで待ちましょう.

  • 2. AVRStudio起動

ドライバがインストールできたら,AVRStudioを起動しましょう.

  • 3. プロジェクト作成

新しいプロジェクトを作りましょう.ダイアログで[new project]を選択(もしくはツールバーのproject->new project)し,project typeを[AVR GCC],project nameに適当な名前(helloAvrとか)を入力し,とりあえず[finish]を押しましょう.

  • 4. 使用ライタ,AVRの設定


画像の(1)の部分のボタンを押して,使用するライタの設定を行います.
PlatformからAVRISP mk2を選択し,PortでUSBを選択し,[Connect]を押しましょう.
するとAVRの設定画面(画像の(2)の部分のボタンを押した時に出るものと同じもの)が表示されるので,[Main]タブでDeviceをATtiny2313に.
Device選択の下部にある[Programming Mode and Target Settings]をISP modeに.ISP Frequencyを[Settings]ボタンを押して125.0kHzに変更しましょう(この周波数は書き込む時の書き込み機側のデータ転送クロックです.一般的にターゲットとなるAVRのクロックの1/4以下に設定するそうです.).

  • 5. プログラム記述

好きなコードを書きましょう

ツールバーのBuildから[Build]を選択.コードに間違いが無ければ,画面下部のウィンドウに「Build Succeeded」と表示されます.
これで無事に.hexファイルが書き出されました.

ここまでソフトウェア的な設定を行っていましたが,実際にhexファイルをAVRマイコンに書き込むためには,AVRライタと物理的に接続させなければなりません.
まず,今回使用しているATtiny2313とAVRISPmk2の仕様を図に示します.

ATtiny2313にはPA,PB,PDというようなポートと,VCC, GNDといったポートがあるのが分かります(実際には各ポートにさらにいくつかの役割があるのですが,ここでは分かりやすいようにとりあえず必要なものだけを記述してあります.詳細は,データシート).
PA,PB,PDなどのポートはI/Oに使用します.VCC, GNDはその名の通りAVRマイコンの電源として使います.
ちなみにATtiny2313の動作電圧は1.8V~5.5Vです.必要な電源を用意しましょう.ボタン電池CR2032(3V)などでも十分動きます.
またPA2,PD0,PD1,PB7,PB6,PB5にはそれぞれ()で別の役割も書いてあります.こちらに注目しながら,AVRISPmk2の方も見てみましょう.
VCC,MOSI,GND,MISO,SCK,RESETという端子になっています.
VCC,GNDは電源として,MISO,MOSIはそれぞれデータの入出力に使われます.
また,SCKはクロック信号, RESETはリセット信号です.
これらの端子をAVRマイコンの対応した所に接続します.
つまり,AVRマイコンのVCC端子にAVRISPmk2のVCC, GNDにGND, MOSIにMOSI, MISOにMISO, RESETにRESET, USCKにSCKを繋ぎます.
(MISO,MOSIがクロスになっていない点に注意.単純に同じ名称の部分に繋ぎます.)

  • 8. 書き込み

これで最後です.
使用ライタの,AVRの設定であった画像の(2)の部分のボタン(AVRと書かれたICの形をしたボタン)を押してProgramタブを選びます.
画面中部のFlashという部分の[Program]ボタンをクリックすれば,書き込みが行われます.

何事も問題なければ,AVRにプログラムが転送され,あなたが書いたコードの通りの振る舞いをはじめます!

まとめ

以上がAVRマイコンを扱うための手順です.
とりあえず,有名なマイコン(ATtiny2313,ATmegaシリーズなど)と純正のライタ(AVRISPmk2)を買って,WinAVRとAVR Studioを使っておけば間違いないです.特に躓くところもないでしょう.

必要なものリスト

テスト

上記の手順を試してみるために,以下のサンプルプログラムを書き込んでみましょう.
回路はPD0から抵抗とLEDをつないでGNDに接続するだけです.

#incldue <avr/io.h>

int main() {
	DDRD = 0b00000001;
	while(1) {
		PORTD = 0b00000001;
	}
	
	return 0;
}

LEDが点灯すれば成功です!

次回

プログラムの書き方,簡単なプログラム(LED点滅,ボタン)などを試してみましょう.
[Arduinoをはじめよう]に沿って色々なプログラムを解説できるといいなぁ.