Atmel AVR
◆Amel AVR はアトメルが製造している8ビット マイコン(マイクロコントローラー)
ATtinyシリーズ、ATmegaシリーズが発売されています。CPU、RAM、ROM、入出力ポート、EEPROM,クロック発振回路、タイマー、シリアル通信、AD変換などの機能がワンチップに収められています。
よくAVRと比較されるPICは、関連書籍が豊富で、ネット上にも多くの情報が出ているメリットがありますが<アッセンブリ言語が特殊で馴染みにくい>
<プログラム・ライターが高価でPIC型番が限定されている><C言語コンパイラが高価なものが多い>、等のデメリットがあります。
AVRはこの点、構成が洗練されていて使いやすく、ATMELが開発環境を無償で配布しています。
また、AVRはArduinoにも採用されています。Arduinoは、AVRマイコンとIOポートから成る専用ボードをC++風言語で制御するプラットホームとして普及したシステムです。
アトメルの開発環境「AVR Studio または Atmel Studio」を無料でダウンロードできます。
●AVR Studio4
AVR Studio4はアトメル社が無料で提供していたAVR開発環境です。AVR Studio 4は旧版ですが安定した動作のため広く使われているようです。(なお、アトメル社は2016年、マイクロチップ社に吸収されましたが、Atmelの名は残しているようです)
AVR Studio 4
◆仮想マシンでAVR Studio4
Win10の場合は後述の Atmel studio 7の環境が必要になるのですが、慣れたAVRStudio4を使いたい人にとっての奥の手としては仮想マシンを導入する方法があります。
仮想マシンの導入の仕方は→VMware
仮想XPを立ち上げ、このXPにWinAVRと、AVR Studio4をインストールすると AVRIsp mkUが認識され、ライターに書き込むことが可能となります。AVRIsp
mkUのUSBを先に接続してから を仮想XPを立ち上げると認識されないので、USBは後から接続します。接続は スタート→設定→コントロールパネル→システム→ハードウェア→デバイスマネージャ→Jungo
で確認することができます。
VMware上のXPは、AVR Studio4だけでなく、Win10の互換モードではどうしても動かなかった他の旧プログラムも快適に動作することが確認できています。
●WinAVR
AVR Studio4ではアセンブラ言語でしかプログラミングできません。c言語でプログラム開発するためにはWinAVRを別途入手します。
WinAVR入手先: http://sourceforge.net/projects/winavr/files/
上方の「Files」タブをクリックしてWinAVRを選択、一覧が出たら最新のバージョンを選び
WinAVRxxxxxxxinstall.exeをクリックします。
インストールプログラムを適当な(TEMPのような)フォルダに保存ます。
●WinAVR と AvrStudio4 のインストール
WinAVRを先にインストールし、次にAVR Studioをインストールします。
どちらも標準的なインストールのままでOKです
●プログラマー
AVR Studioをインストールすると、AVRIsp mkU(インサーキットプログラマ)で、マイコン回路に接続したままの状態でプログラムの書き込みができるようになります。後述のATMEL
Studio 7でも同じです。
なお、AVRIsp mkUはAtmel社純正のプログラマーとして知られていましたが、2018年現在、発売が中止されています。 ただし AVRIsp
mkU互換、または、AVRIsp mkU適合 とされる「AVRライター」がAmazonなどから販売されています
●AVR Studio4 の使い方
AVR Studioの「てんとう虫」アイコンをクリックしてスタートします。
New Project → AVR GCC → Locationフォルダを指定します(右下の・・・で指定)
(2回目からは最近のプロジェクトRecent project の中から再開することができます。)
適当なProject nameを入力 → Next → Device(例:ATMEGS164P)を選択 → Finish
プログラム書き込みの画面が開きます。
このホームページに乗せてあるATtinyまたはATmega用プログラムを選択コピーし、AVR Studioの作成画面に貼り付けます。
プログラムが記述できたら、BuildボタンでBuildします。エラーが発生しないで "0 Wornings"が表示されたらOKです。
AVRIspをパソコンとターゲット基板に接続し、ターゲット基板の5V電源を入れます。
Tools → Program AVR → Auto Connect → Input HEX file にプログラムを書いたdefaultフォルダの中のHEXファイルを指定し
Program ボタンを押します。
エラーなしで書き込めたら完了です。
なお、マイクロコントローラー内のヒューズを設定する時は、Tools → Program AVR → Auto Connect の後Fusesタグをクリックして、例えばクロック選択の場合は CKDIV8タグのチェックを設定し、programします。各Fuseをポイントすると説明が表示されます。
●AVR Studioのエラー
Win8.1以上のビルドで rm.exe エラーが発生し、この原因が WinAVRのutils\bin\msys-1.0.dll の問題との情報が上がっています。下記のリンクから新しいdllをダウンロードし、msys-1.0.dllを入れ替えると正常にビルドできるようになることが報告されています。
http://www.madwizard.org/download/electronics/msys-1.0-vista64.zip
また、 AVRIsp mkUで書き込もうすると"Commands are not allowed in disconnected mode"というUSB未接続のエラーが発生してしまいます。これを避けるためには
http://labs.nevion.com/support/tools/Atmel/driver-atmel-bundle-7.0.888.exe
で新しいドライバーをインストールしする方法がネット上で公開されています。
●PCとAVRのクロックの不適合エラー
AVRIsp mkUで書き込もうすると下のようなエラーが表示される場合があります。
「デバイスは正しくソケットに接続され、ISPケーブルも正しく接続されていますが、メインページに指定されたISPプログラミング周波数は、デバイスのクロック周波数の1/4をはるかに下回っています、、、」というようなエラーが表示されてしまう。 こんな場合は電源を供給した状態で下記のように、Advanced
タグの8.0MHzを Read ボタンを押して、下図のように 全てOKが表示されたら、Fuses とProgramを実行してみます。
●Atmel studio 7
AVR Studio 4 と Win AVRは、XPやVista環境下においては安定していて使いやすかったのですが、Win10などではビルトまではできるものの、AVRispMkIIに接続できないなどの問題が発生することが指摘されています。
これは、AVR Studio 4 の後継のAtmelStudio 6 でも同じでしたが、Win10に対する安定性は、Atmel studio7でようやく解決したようです。
公表されているAtmelStudio7 の適応環境は
AVR Studio 4 をアンインストールする場合は、WinAVRも不要となりますのでアンインストールします。
Atmel Studio 7のインストーラーには、ウェブインストーラーとオフラインインストーラーとがあり、基本的には同じはずですが、インストール自体は前者の方が使いやすいかもしれません。
ATMEL Studio 7 がインストールできたら、
Start → New Project の GCC Executable Project を選び、
Name にプロジェクトの名前
Location にフォルダを指定し
OKするとマイクロコントローラのデバイス選択画面がでるので指定します。
画面に空のCソースファイルが現れますから必要なプログラムを記述します。
AVRstudio4 からプログラムを移植する場合は File →Import で変換することができるようですが、空のソースファイルを作っておいてから、メモ帳などを使って、AVRstudio4のc
ファイルからコピー&ペーストで作るほうが確実なようです。
なお、WinAVRを使用していた場合は割り込み関数名は旧名でも良かったのですが7の場合は新しい関数名を使わないとエラーとなります。C言語でマイコン制御(3)参照
その他、マクロのPROGMEMがそのままでは使えないC原語でマイコン制御(2)参照
リセット関数の __ctors_end(); が使えないなどの違いがあるようです。
AtmelStudio7はAVR Studio 4に比べると立上りがひどく遅いという欠点はありますが、一旦立ち上った後の速度は気になりません。検索や置き換えの編集機能の充実は便利で、自動参照機能もありがたいのですが、時には周囲に湧いて出て来る参照が邪魔になります(設定で押さえることはできるのかも知れませんが、)
下は、こうして作ったcソースファイルの例です。
AVRisoMkUに書き込む場合は上図のように、「Debug」ではなく「Release」モードにして Build → Build を指示すると、コンパイルが始まります。
1回目はいろいろアラームも出てきますが、エラーが無ければ、ビルドをもう一回指示すると、上図のように Build succeeded ,0 failed が出てきます。
USB をAVRispMKU に接続します。最初に、ドライバーのupdateの画面が出たら更新します。ちなみに、更新してもAVRstudio4に対しては上位互換となっているようです。
ターゲットにも電源を入れ、 Tools → Device Programming で
プログラミング画面が表示されますから
下のように、Tool にAVR isp MKU を選択し Device型番を選択し、Apply ボタンを押します。
AVR isp MKUのUSBが接続されると書き込み画面が表示されます。
Memoriesタグで Program ボタンを押すと書き込みができます。
なお、AVRstudio4の場合は、同じシリーズのデバイスなら例えば、Atmega164AでもAtmega164Pでも書き込めましたが、AtmelStudio7ではタイプ指定が異なっていると
Device signature エラーが発生するので注意が必要です。
正常に書き込みができると、Verifying Flesh ,,, OK が表示されます。
書き込みファイルはReleaseフォルダの elf または hex ファイルを使います。
なお、ヒューズはFusesタグで設定します。設定画面はAVR Studio4と違っていますが要領は同じです。
プロジェクトを再開する時は.Open Project の .atsln(アトメルソリューションファイル)をクリックして開くことができます。
なお下は、まったく同じソースをAvrStudio4とATMEL Studio7でコンパイルした結果です。
双方とも、サイズ優先のオプションを使っています。 Studio7の方が10%程短い出力を出していることがわかります。