MacでAVRのソフトウェア開発するよ.
学生の頃はWindowsでAVRマイコンを使った組み込み開発をやっていました.Windowsでは,Atmel社公式の統合開発環境AVR Stduioが提供されており便利です.(特にVisual Studioベースになってからめちゃくちゃ使いやすい.)
今は,Macを使うことが多いのでMacで開発環境を整えます.
使用するハードウェア
使用するマイコンはArduino搭載AVRと同じもしくは互換性のあるAtMega88Pシリーズです.書き込みは恐らく標準的なライタであるISP mkIIです.
必要なパッケージ
Xcodeのインストール方法については割愛します.
CrossPack-AVRには,ビルドから書き込み,Xcodeのプロジェクトテンプレートまで必要なツールが揃っているようです.
インストール
brew caskでインストール
公式サイトから直接パッケージファイルをダウンロードする方法もあります.しかし今回は,brew caskでインストールします.
出来る限りHomebrewでインストールした方が後々管理がラクかと思います.
$ brew cask install crosspack-avr
パスを通す
さて,パスを通します.export PATH=$PATH:/usr/local/CrossPack-AVR/bin/
マニュアル
以下のディレクトリにマニュアルがあるので参考になります.- /usr/local/CrossPack-AVR/manual/index.html
- /usr/local/CrossPack-AVR/doc/
開発開始
プロジェクトの作成
$ avr-project <プロジェクト名>
作成後,xcodeprojファイルを開きます.
プロジェクトには,2つのファイルが登録されています.
- main.c
- Makefile
Makefileの設定
重要なのはMakefileです.Makefileで書き込み先のマイコンの設定を行います.この辺りは,WindowsのAVR Studioだと自動もしくはGUIで設定できるので安心ですが,こちらでは直接指定します.
デフォルトは次のようになっています.
DEVICE = atmega8 CLOCK = 8000000 PROGRAMMER = #-c stk500v2 -P avrdoper OBJECTS = main.o FUSES = -U hfuse:w:0xd9:m -U lfuse:w:0x24:m
- DEVICEは,使用するマイコンを指定する.文字列は/usr/local/CrossPack-AVR/manual/index.htmlの「Supported Devices」から選ぶ.
- CLOCKは,文字通り動作クロック数を指定する.
- PROGRAMMERは,プログラマを指定する.定義名は /usr/local/CrossPack-AVR/doc/avrdude/avrdude_4.htmlにドキュメントされている.
- OBJECTSは,Makefileでいつも指定するオブジェクトファイル
- FUSESは,この値でマイコンの動作指定を行う.誤って指定するとそれ以降書き込みが出来なくなる場合もあるため慎重に指定しなければならない.AVR Fuse Calclatorで値を作るのがベスト.
今回は以下のような設定を利用します.
DEVICE = atmega168p CLOCK = 8000000 PROGRAMMER = -c avrispmkII -P usb OBJECTS = main.o FUSES = -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xf9:m
ビルド&書き込み
main.cのプログラムはまだテンプレートのみですが,いったん書き込んでみましょう.
Runボタン,もしくはcommandキー+bでビルドと書き込みが実行されます.
ただし,makeのターゲットを確認しましょう.
- fuse: FUSESの値を書き換えて,プログラムを書き込む.
- flash: FUSESの値はそのままで,プログラムを書き込む
です.その他の値はMakefileで確認のこと.初回のみfuseで書き込んで,2回目以降はflashでよいでしょう.
AVR ISP mkIIを接続し,フラッシュしてみましょう.
まとめ
AVRの開発をMacでもやりたい!と思い立って試してみました.(素直にWindowsでやれば良いのに)
Mac向けAVRパッケージであるCrosspack-AVRをhomebrewでインストールして構築しました.
ただ,WindowsでAtmelStudioを利用した方が無難だと思いますね,やはり.
ただ,WindowsでAtmelStudioを利用した方が無難だと思いますね,やはり.