2009/11/30: AVR studioでArduinoのプログラムをAVRに書き込む方法
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ボタンだけです。他は使わなくても大丈夫です。
1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。
- 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 Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。
ちなみに、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で書いたプログラムが書き込めました。
自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。
プログラム自体は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ボタンだけです。他は使わなくても大丈夫です。
1. ツールバーのようなところにある、Connectボタンを押して、AVRへの接続に使うUSBライタを指定します。
- 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 Fuses タブ
4. Fusesタブで、CKDIV8のチェックをはずします。ここにチェックが入っていると、AVRの動作がおかしくなるので注意が必要です。クロック数が8分の1になってしまい、delay(100);などの処理に時間がかかってしまったりするようです。
5. Fusesタブで、SUT_CKSELで、AVRの周波数を設定します。外部クロックを使用する場合は(基本的に外部クロックを利用すると思いますが)メニューの一番下にある、Ext. Crystal OSC. 8.0-MHx〜〜というものを選びます。意味は、外部クロックで、8MHz以上の周波数のものを利用するということです。(16MHzなどが今は一般的だと思われます)項目選択後は、Programボタンを押します。
ちなみに、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で書いたプログラムが書き込めました。
自作のArduinoを作りたい場合はsuganさんのこちらのサイトも参考になりそうです。
2008/04/22: マイコン初心者のAVR入門 2.5
プログラミングについて記事を書くといいつつ、時間がなくなってやれてません。
今日も、最近買ったそれ系の本の紹介でお茶を濁したいと思います。
試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
前回紹介した本は実例集という感じでしたが、こちらはAVR自体についてもっと詳しく書かれています。マイコンとはなにかってとこから書いてあるので、AVRで入門する場合には一番いいかも。
AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
多分、AVRの一番詳しい本。念のため買って見たけど・・・。
Handmade Electronic Music: The Art of Hardware Hacking
サウンドアーティストのNicolas Collinsさんの著書。洋書ですが、写真や図が多くて見やすいです。「コンセントから電力をとるなんてことはするなよ!死んじまうぞ」と、真っ先に注意をしてます。
Richard Lermanや刀根康尚の名前が出てくるので、それだけでやる気になります。こういう本なかなかないんじゃないかな。
今日も、最近買ったそれ系の本の紹介でお茶を濁したいと思います。
試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (Skill up my computerシリーズ)
前回紹介した本は実例集という感じでしたが、こちらはAVR自体についてもっと詳しく書かれています。マイコンとはなにかってとこから書いてあるので、AVRで入門する場合には一番いいかも。
AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
多分、AVRの一番詳しい本。念のため買って見たけど・・・。
Handmade Electronic Music: The Art of Hardware Hacking
サウンドアーティストのNicolas Collinsさんの著書。洋書ですが、写真や図が多くて見やすいです。「コンセントから電力をとるなんてことはするなよ!死んじまうぞ」と、真っ先に注意をしてます。
Richard Lermanや刀根康尚の名前が出てくるので、それだけでやる気になります。こういう本なかなかないんじゃないかな。
2008/04/10: マイコン初心者のAVR入門 2
AVR入門にあたって、参考にした本はこちらの「AVRマイコン活用ブック」です。とにかく実例がたくさん載っているので楽しいのですが、これだけでは初心者にはちんぷんかんぷんなところも多いです。(PICマイコン用の書籍ですが、「やさしいPICマイコン プログラミング&電子工作」は丁寧な解説つきでよかったです)
AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
この本では、ストロベリー・リナックス社の「ATMEGAマイコンボードキット」というキットを用いて、様々な応用例を示してあるのですが、肝心のボードキットが品切れ状態で、僕はしょうがなく部品一つ一つを買って、ブレッドボードで自作しようと試みました。基盤とブレッドボードでは、配線の都合が異なるので、用意する部品も多くなります。あれこれ考えてリストアップしておいたつもりでも、買い忘れが発生します。100μFの電解コンデンサは、冒頭の部品リストにも入っていないので要注意です!(これのせいで、まだ未完成・・・)
結局、僕はキットの複製はとりあえず諦めて、その次にあったATTiny26を使った自作マイコンボードから始めることにしました。こちらは部品数も少なくシンプルです。一番小さいサイズのブレッドボードでも組むことができます。
誌面でリストアップされた部品以外で、あるといいなと思ったものをあげます。
ブレッドボード
一番小さいのでもできましたが、何個か大きさ違いであるといいかも。
ジャンプワイヤ
多すぎだと思うくらいで良いと思います。意外と使う。
虫ピン付の導線
電源の接続や、そのほかもろもろで重宝します。最低2本は欲しい。
LED
たくさんあっていいと思います。
ラジオペンチ、ニッパー、ピンセット
ピンセットはあった方が良いです。
ハンダ、ハンダゴテ、こて台
基本ですが、ブレッドボードで組む場合もやっぱり、あった方が良いです。ブレッドボード用ISPコネクタ作成で使いました。
セメダイン
ブレッドボード用ISPコネクタ作成で使いました。ハンダ付けしたところを固める用にあるとよさげです。
完成図
ブレッドボード用ISPコネクタ
完成図の奥の方に見える、束になった導線はISP端子用のコネクタで、自作しました。ISP端子は2×3ピンなので、そのままではブレッドボードにさしたとき混線してしまいます。そこで、ピンプラグとフラットケーブルを組み合わせて6ピン一列に変換していると言うわけです。抜き差しで、接合部分に結構負担がかかるので、ずれないようなちょっといいピンプラグにしたり、セメダインで固めたり工夫が必要です。
次回は、いよいよプログラミングの話を書こうかな。
AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
この本では、ストロベリー・リナックス社の「ATMEGAマイコンボードキット」というキットを用いて、様々な応用例を示してあるのですが、肝心のボードキットが品切れ状態で、僕はしょうがなく部品一つ一つを買って、ブレッドボードで自作しようと試みました。基盤とブレッドボードでは、配線の都合が異なるので、用意する部品も多くなります。あれこれ考えてリストアップしておいたつもりでも、買い忘れが発生します。100μFの電解コンデンサは、冒頭の部品リストにも入っていないので要注意です!(これのせいで、まだ未完成・・・)
結局、僕はキットの複製はとりあえず諦めて、その次にあったATTiny26を使った自作マイコンボードから始めることにしました。こちらは部品数も少なくシンプルです。一番小さいサイズのブレッドボードでも組むことができます。
誌面でリストアップされた部品以外で、あるといいなと思ったものをあげます。
ブレッドボード
一番小さいのでもできましたが、何個か大きさ違いであるといいかも。
ジャンプワイヤ
多すぎだと思うくらいで良いと思います。意外と使う。
虫ピン付の導線
電源の接続や、そのほかもろもろで重宝します。最低2本は欲しい。
LED
たくさんあっていいと思います。
ラジオペンチ、ニッパー、ピンセット
ピンセットはあった方が良いです。
ハンダ、ハンダゴテ、こて台
基本ですが、ブレッドボードで組む場合もやっぱり、あった方が良いです。ブレッドボード用ISPコネクタ作成で使いました。
セメダイン
ブレッドボード用ISPコネクタ作成で使いました。ハンダ付けしたところを固める用にあるとよさげです。
完成図
ブレッドボード用ISPコネクタ
完成図の奥の方に見える、束になった導線はISP端子用のコネクタで、自作しました。ISP端子は2×3ピンなので、そのままではブレッドボードにさしたとき混線してしまいます。そこで、ピンプラグとフラットケーブルを組み合わせて6ピン一列に変換していると言うわけです。抜き差しで、接合部分に結構負担がかかるので、ずれないようなちょっといいピンプラグにしたり、セメダインで固めたり工夫が必要です。
次回は、いよいよプログラミングの話を書こうかな。
2008/04/10: マイコン初心者のAVR入門
Gainerを少しかじっただけの初心者が、調子にのってAVRに手をつけ始めました。完全孤独な手探り状態ですが、同じように興味のある人たちのために人柱となるべく、分かったことを少しずつまとめていきたいと思います。専門分野の方から見ればかなりお粗末な内容、間違いもあるかもしれませんが、ご容赦ください。
*この記事はWindows専用です。Macで扱えるのかはよく知りません。ごめんなさい。
AVR
AVRとはAtmel社から発売されているマイコンの一種です。マイコンの代名詞と言えばMicrochip社のPICですが、導入費が比較的安いのと、性能面でもアドバンテージがありそう(この辺りで入れ知恵されました)だったのでAVRに挑戦することにしました(PICに比べて関連書籍が圧倒的に少ないので、不安ですが・・・)。ArduinoのマイコンにもAVRが採用されています。ちなみにGainerのマイコンはCypress社のPSoCです。
このAVRは「ATMega168」(500円)と「ATTiny26」(400円)です。括弧内はマルツパーツでの価格です。GainerやArduinoなどのI/Oモジュールは一個あたり3000円〜10000円くらいしますが、とりあえず単体で購入しさえすれば、PCとの接続は簡単にできます。一方、マイコンは一個あたり数百円で購入できますが、導入の際にはあらかじめ必要なものがあります。ライターと呼ばれる、書き込み用のデバイスです。
ライター
プログラマーとも言うようです。種類がたくさんあるので、何がいいのか迷いました。
ライターは大きく2つのタイプに分けられます。ひとつは、パラレルライターという(のが正式名称なのか分かりませんが)ライター自体の筐体に指しごみ口があって、そこにマイコンを差し込んで書き込むタイプ。もうひとつは、ISPと呼ばれるタイプのものです。
ISPはIn the System Programmingの略で、要はマイコンを回路に組み込んだ状態で書き込みできるものです。ISPコネクタという2×3のピンプラグを回路内に配置しておいて、ライターとはそこを介して書き込み手続きをします。いちいちマイコンをはずして書き込みをしなくてもいいので、断然こちらのタイプの方が良いような気がします。デバイス自体も前者よりも安いし。
さて、ISPタイプに決めたは良いものの、まだ選択肢はたくさんあります。まず、PCとの接続方式がシリアル接続やUSBなどあります。これは、USBの方が何かと便利でしょう。
ISPでUSB、ここまで絞ってもまだいろいろあります。Atmel社がだしている純正のものの他にも、サードパーティ製品も多数、自作する人もいます。サードパーティ製品の方が安いのですが、新機種への対応や動作保障などを考慮して、純正のものを買うことにしました。
AVRISP mkII
マルツパーツで6000円でした。見た目も他のよりかわいくてグッドです。
ドライバは、接続してネット経由で探させると見つかったので特にダウンロードの必要はないみたいです。
総合開発環境
ライターが手に入ったら、次はソフト面の開発環境を整えます。開発環境にもいろいろあるのかもしれませんが、Atmel社から無料で入手できるAVR Studioを使います。2008年4月10日現在バージョン4.13が最新でした。何にもついてないAVR Studio 4.13が本体です。個人情報の入力を求められるので、面倒くさいけど書いてダウンロード&インストール。SP1とかSP2とかは、追加モジュールみたいなものっぽいので数字の大きい方だけダウンロードしてインストール。
Cコンパイラ
AVR Studioだけだと、開発はアセンブラ言語のみでC言語が使えないので、C言語用のコンパイラをインストールします。WinAVRというのがあるので、これをインストールしました。こちらも無料です。
以上で、一応環境は整いました。もちろん、ほんとにこれだけでは何にもできないので、次回はその他の細かいところをまとめてみようと思います。
*この記事はWindows専用です。Macで扱えるのかはよく知りません。ごめんなさい。
AVR
AVRとはAtmel社から発売されているマイコンの一種です。マイコンの代名詞と言えばMicrochip社のPICですが、導入費が比較的安いのと、性能面でもアドバンテージがありそう(この辺りで入れ知恵されました)だったのでAVRに挑戦することにしました(PICに比べて関連書籍が圧倒的に少ないので、不安ですが・・・)。ArduinoのマイコンにもAVRが採用されています。ちなみにGainerのマイコンはCypress社のPSoCです。
このAVRは「ATMega168」(500円)と「ATTiny26」(400円)です。括弧内はマルツパーツでの価格です。GainerやArduinoなどのI/Oモジュールは一個あたり3000円〜10000円くらいしますが、とりあえず単体で購入しさえすれば、PCとの接続は簡単にできます。一方、マイコンは一個あたり数百円で購入できますが、導入の際にはあらかじめ必要なものがあります。ライターと呼ばれる、書き込み用のデバイスです。
ライター
プログラマーとも言うようです。種類がたくさんあるので、何がいいのか迷いました。
ライターは大きく2つのタイプに分けられます。ひとつは、パラレルライターという(のが正式名称なのか分かりませんが)ライター自体の筐体に指しごみ口があって、そこにマイコンを差し込んで書き込むタイプ。もうひとつは、ISPと呼ばれるタイプのものです。
ISPはIn the System Programmingの略で、要はマイコンを回路に組み込んだ状態で書き込みできるものです。ISPコネクタという2×3のピンプラグを回路内に配置しておいて、ライターとはそこを介して書き込み手続きをします。いちいちマイコンをはずして書き込みをしなくてもいいので、断然こちらのタイプの方が良いような気がします。デバイス自体も前者よりも安いし。
さて、ISPタイプに決めたは良いものの、まだ選択肢はたくさんあります。まず、PCとの接続方式がシリアル接続やUSBなどあります。これは、USBの方が何かと便利でしょう。
ISPでUSB、ここまで絞ってもまだいろいろあります。Atmel社がだしている純正のものの他にも、サードパーティ製品も多数、自作する人もいます。サードパーティ製品の方が安いのですが、新機種への対応や動作保障などを考慮して、純正のものを買うことにしました。
AVRISP mkII
マルツパーツで6000円でした。見た目も他のよりかわいくてグッドです。
ドライバは、接続してネット経由で探させると見つかったので特にダウンロードの必要はないみたいです。
総合開発環境
ライターが手に入ったら、次はソフト面の開発環境を整えます。開発環境にもいろいろあるのかもしれませんが、Atmel社から無料で入手できるAVR Studioを使います。2008年4月10日現在バージョン4.13が最新でした。何にもついてないAVR Studio 4.13が本体です。個人情報の入力を求められるので、面倒くさいけど書いてダウンロード&インストール。SP1とかSP2とかは、追加モジュールみたいなものっぽいので数字の大きい方だけダウンロードしてインストール。
Cコンパイラ
AVR Studioだけだと、開発はアセンブラ言語のみでC言語が使えないので、C言語用のコンパイラをインストールします。WinAVRというのがあるので、これをインストールしました。こちらも無料です。
以上で、一応環境は整いました。もちろん、ほんとにこれだけでは何にもできないので、次回はその他の細かいところをまとめてみようと思います。