AVR マイコン開発の基礎知識
本稿では、
ATMEL
のAVR
マイコンを使って装置を組み立てる場合に必要な準備と基本的なソ フトウェアの操作方法について説明します。1
準備するもの
(1) AVRライタ(プログラマ)
(2) 開発環境(エディタ、コンパイラ、リンカ、書き込みソフト等)
2
使用するAVRライタ
ここでは、写真に示した純正の
AVR
ライタ(プログラ マ)ATmel AVRISPmkII
を使います。
参考
URL
http://www.atmel.com/ja/jp/tools/avrispmkii.aspx
3
開発環境の準備
(1) OS X の場合
(a) CrossPack for AVRのダウンロードとインストール
公式サイト https://www.obdev.at/products/crosspack/index.html
ダウンロードはhttps://www.obdev.at/products/crosspack/download.html から。
C
言語のコンパイラ、リンカ、書込みツールなど必要なツールを含むパッケージCrossPack-AVR-*.dmg をダウンロードする。
(b) CrossPack-AVR-*.dmgをダブルクリックして展開
[control]キーを押しながらCrossPack-AVR.pkgをクリックして「開く」を選択し、イ ンストールします。
(c) テキストエディタの用意
C
言語でプログラムを書くには、適当なテキストエディタが必要です。標準搭載のテキストエディットなどのテキストエディタでも書けます。
Xcodeをインストールしておくと、ビルドからマイコンへの書き込みまでが簡単にで きるのが便利です。
(2) Windowsの場合
Atmel Studioをダウンロードして、インストールします。
URL: http://www.atmel.com/ja/jp/tools/ATMELSTUDIO.aspx
4
ソースコードの入力からマイコンでプログラムを動かすまで
以下の章で紹介されるプログラムをマイコンに書き込むには、ソースコードの入力と
Makefile
の作成、コンパイル、リンクと書込みといった一連の作業が必要です。これは開発環境によって操作方法が異なります。
(1) OS Xの場合
(a) Xcodeを使う場合
別ファイル”ua1-crosspackavr-xcode.pdf”は、本章の内容をより詳しく説明していま す。
(i) ディレクトリ移動とプロジェクトファイルの作成
「ターミナル」を起動します。
cd ~/documents と入力して[return]キーを押します。(「書類」フォルダに移動)
avr-project KaimuUA1 と入力して[return]キーを押します。
ここでKaimuUA1はプロジェクトの名前です。判別できればどんな名前でも構いません。 パスが通っていないとエラーが出た場合には、次のコマンドで、パスを設定します。
export PATH=/usr/local/CrossPack-AVR/bin:$PATH
Finderで”書類”フォルダ内の”KaimuUA1”フォルダを開きます。
“KaimuUA1.xcodeproj”をダブルクリックして開きます。(Xcodeが起動します)
(ii) Makefileの修正
XcodeのProject Navigator内の KaimuUA1 アイコンをクリック さらに firmware アイコンをクリック
その中のMakefileアイコンをクリックして、次のように修正します。
(修正前)
DEVICE = atmega8 CLOCK = 8000000
PROGRAMMER = #-c stk500v2 -P avrdoper OBJECTS = main.o
FUSES = -U hfuse:w:0xd9:m -U lfuse:w:0x24:m …(中略)…
AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE)
(iii) KaimuUA1のArgumentsの修正
XcodeのProject Navigator内の KaimuUA1 アイコンをクリック [Arguments]のボックス内の内容を flash に変更
(iv) ※ クロックを変更したい場合
本機を購入したばかりの
ATmega168P
で製作した場合は必要ないのですが、別の 基板で動作していたATmega168P
を使う場合には、Fuse
ビットの変更が必要にな る場合があります。その場合には、一度だけ次の操作をしてください。
(1)
XcodeのKaimuUA1アイコンをクリックし、 [Arguments]のボックス内の内容を fuse に変更(2)
メニューから[Product]-[Build]をクリック。(3)
XcodeのKaimuUA1アイコンをクリックし、 [Arguments]のボックス内の内容を flash に変更(v) ソースコードの入力
XcodeのProject Navigator内の KaimuUA1-firmware内の main.c アイコンを クリックします。
そして、ソースコードを入力します。
(例)
PD0
に接続したLED
を点灯するコード#include <avr/io.h>
int main(void) {
DDRD = 0b11111111;
while(1){
PORTD |= (1<<PD0);
}
return 0; }
(vi) ファームウェアのビルド
(b) テキストエディット等のテキストエディタとターミナルを使う場合
(i) ソースコードの入力と保存
テキストエディットやiTextなどのテキストエディタで、ソースコードを入力し、 「書類」フォルダ
(
documentsディレクトリ)KaimuUA1フォルダ(名前は区別 ができればなんでもよいですが、半角英数字のみを使ったほうが後々の処理が楽で す。)の中に保存します。KaimuUA1フォルダがない場合には作ってから保存します。
ファイル名は以下のとおりです。別の名前にするときは、MakefileのPROJECT=の 後の名前を変更してください。
simple-trainer-atmega168.c
(ii) Makefileの作成と保存
テキストエディタで次のMakefileを入力します。先ほどのKaimuUA1フォルダに Makefileというファイル名で保存します。
# AVR-GCC Makefile
PROJECT=simple-trainer-atmega168 SOURCES=$(PROJECT).c
CC=avr-gcc
OBJCOPY=avr-objcopy MMCU=atmega168 TARGETDEV=m168p
CFLAGS=-g -O2 -mmcu=$(MMCU) -Wall
$(PROJECT).hex: $(PROJECT).out
$(OBJCOPY) -j .text -j .data -O ihex $(PROJECT).out $(PROJECT).hex
$(PROJECT).out: $(SOURCES)
$(CC) $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES)
program: $(PROJECT).hex
sudo avrdude -p $(TARGETDEV) -P usb -c avrispmkII -e -U flash:w:$ (PROJECT).hex
clean:
rm -f $(PROJECT).out rm -f $(PROJECT).hex
make program
エラーが表示されたら、エディタでソースコードを直し、再び、make programコ マンドを実行します。
ターミナルに戻ってから[↑](上向き矢印キー)を押すと、前に入力されたコマン ドがそのまま表示され、[return]キーを押すだけでよいので楽です。