ブレッドボードラジオAVRマイコン入門

USBライターを用いたプログラミング

 別項で製作したUSB接続AVRライターおよびAVRマイコン回路を使って、実際にプログラムを組んでLEDを点滅させてみました。プログラムの作成には「BASCOM-AVR」というソフトを使います。パソコンは、WindowsXPで動くノートパソコンを用いました。

1. BASCOM-AVRのインストール

 まず、プログラム作成用のソフト「BASCOM-AVRのデモ版」をインターネットからダウンロードして自分のパソコンにインストールします。って簡単に言いますが、私のようにパソコンの操作に慣れていない者にとってはこれがひと苦労です。結果的にうまくいったものの、確実に成功する方法を説明することができません。まずは、BASCOM-AVRを出しているMCS Electronicsという会社のダウンロードサイト(下記リンク)にアクセスします。

 MCS Electronicsのダウンロードサイト

 上記のサイト内をスクロールして、下記の黄色の部分をクリックします。運がよければ、これでダウンロードが始まります。かなりファイルサイズが大きいので、低速の回線ではつらいかもしれません。私の場合は10分近くかかりました。

 画面1

 ダウンロードがうまくいかない場合は、日本コンピュータライフという会社でこれをCD-Rに収めたものを3000円で通信販売していますので、そちらから購入するという手もあります。これには日本語の解説も付いています。また、将来BASCOM-AVRの正規版を購入するときに割引を受けられる特典もあります。

 さて、ダウンロードができたら圧縮ファイルを解凍すると「SetupDEMO.EXE」というファイルが出てきますので、これをダブルクリックするとインストールの画面になります。メッセージが全部英語なのでよくわかりませんが、とりあえず「Yes」か「Next」をクリックしていけばなんとかなると思います。構成は、一番上の階層に「MCS Electronics」というフォルダがあり、その下に「BASCOM-AVR」というフォルダができます。このフォルダの中にはたくさんのファイルが入っていますが、その中の「bascavr.exe」というファイルをダブルクリックしてください。下記の画面「BASCOM-AVR IDE」が出てくれば成功です。なお、フォルダの置き場所はどこでもかまわないと思いますが、あまり深いところに入れるとうまく動作しないことがあるとの記事を読んだので、私は「C:」の直下に入れました。

 画面2

2. プログラムの作成

 いよいよプログラムを作ります。BASCOM-AVRはBASIC (ベーシック)というプログラム言語でプログラムを記述します。デモ版(お試し版)では4KBまでの容量のプログラムを作ることができます。今回作成するのはLED1個を1秒おきに点滅させるプログラムです。BASCOM-AVR IDEのツールバー左端の「File (ファイル)」をクリックし、表示されたメニューの中から「New (新規作成)」を選んでクリックするとプログラム作成用のウインドウが出ます。なお、ツールバーの下に並んでいるアイコンをクリックしても同じ操作ができます。

 プログラム作成ウインドウの中に下記の文字列をキーボードから入力します。行頭が下がっているところはキーボードの「TAB」キーを押します。これがLEDを点滅させるプログラムです。

 上記のプログラムについて簡単に説明します。1行目の「$regfile = "at26def.dat"」は、これからプログラムを書き込むAVRマイコンICがATtiny26Lであることを知らせるためのものです。別のICを用いるときは違う表記になります。2行目の「$crystal = 1000000」はICの内臓発振器の周波数を1000000Hz(1MHz)に設定するためのものです。これが時間を測るときの基準になります。

 3行目の「Config Porta = Output」は、ICのポートA(PA0〜PA7、11〜14番ピンおよび17〜20番ピン)を出力端子として使うことを宣言しています。次の「Do」は5行下の「Loop」と対応していて、両者に挟まれた部分の命令を無限に繰り返すことを指示します。

 「Set Porta,0」は、ポートAの0番、つまりICのPA0(20番ピン)の出力を「1」にする命令です。出力が「1」とは、電源電圧と同じ電圧、今回の例では5Vになることを意味します。PA0〜GND間にはLEDがつながっていますから、PA0の電圧が5VになればLEDが点灯します。もしPA1(19番ピン)にLEDをつないだのであれば、この部分は「Set Porta,1」と書けばOKです。

 次の「Wait 1」は直前の状態を1秒間保持する命令です。つまりLEDは1秒間点灯し続けます。「Wait 2」と書けば2秒間点灯します。点灯時間を0.5秒(500ミリセカンド)にしたいときは「Waitms 500」と書きます。

 「Reset Porta,0」は「Set Porta,0」の反対で、PA0の出力を「0」にする命令です。これによりPA0端子の電圧は0Vになり、LEDは消灯します。次の行にまた「Wait 1」があるので、消灯状態も1秒間継続します。ここまでの4行が「Do」と「Loop」に挟まれていますので、LEDは1秒ごとに点滅を繰り返します。「End」はプログラムの終わりを意味します。

 プログラムを書き終わったら名前を付けて保存します。ツールバーの「File (ファイル)」から「Save As (名前を付けて保存)」を選んでクリックします。おなじみの画面が出ますので、適当な名前を付けて保存します。私は「test1.bas」という名前にしました。この時点での画面の様子を下に示します。

 画面3

3. 機械語への変換

 AVRマイコンICはBASICで書かれたプログラムを理解しませんので、機械語に変換する必要があります。この作業もBASCOM-AVR IDE上でできます。ツールバーの「Program (プログラム)」をクリックし、表示されたメニューの中から「Compile (コンパイル=機械語への変換)」を選んでクリックします。下記のような表示が一瞬現れてすぐ消えれば機械語への変換は完了です。

 画面4

 うまく変換できなかった場合は画面の下のほうにエラーメッセージが出ます。英語なので内容はわかりませんが、たいていは文字の入力ミスです。上記画面の「Flash used : 6%」というのは、このプログラムはマイコンICのプログラムを記憶する領域(フラッシュ・メモリー)全体の6%を消費するという意味です。

4. プログラムの書き込み

 機械語への変換が済んだらこのプログラムをマイコンICに書き込みます。まず、使用するAVRライターの設定をします。ツールバーの「Options (オプション)」から「Programmer (プログラマー)」を選択してクリックします。AVRライターの種類を設定する画面が出ますので、「Programmer」の欄の右端の黒三角をクリックして「External progrmmer」を選択します。BASCOM-AVRでは、AVRライターのことをプログラマーと言うようです。続いて、その下の「Other」というタブの付いた領域の「Program」の欄に、AVRライター用のソフト、ここでは「avrezusb.exe」のアドレスを入力します。私の場合は

 "C:\Documents and Settings\bbradio\avrezusb.exe"

となります。BASCOM-AVRの画面の中では「\」はバックスラッシュで表示されます。次に右下の「Use HEX file」というのをクリックしてチェックを入れます。これで設定は完了です。画面の状態は下記のようになります。

 画面5

 なお、「avrezusb.exe」のアドレスを長々と入力するのが面倒ならば、「Program」欄の右端のフォルダのアイコンをクリックして「avrezusb.exe」を探し、「開く」をクリックすれば自動的に入力されます(下記)。

 画面6

 ライターの設定が完了したら画面下方の「OK」をクリックしてウィンドウを閉じます。プログラムの書き込みは、ツールバーの「Program 」をクリックし、表示されたメニューの中から「Send to chip (ICへ転送)」をクリックすればOKです。一瞬コマンドプロンプトの黒い画面が出てすぐ消えます。これでマイコンICへの書き込みは完了です。この瞬間にLEDが点滅を始めるはずです。

 別のプログラム、たとえばLEDの点滅間隔を変えてみたい場合は、BASCOM-AVR IDEの画面にもどってプログラムの「Wait 1」の部分を書き換え、以降の手順を繰り返します。AVRマイコンはライターをつないだままで動作させることができるので、プログラムを変更したときの結果をすぐ確かめることができて便利です。

 なお、前に作ったプログラムをちょっと修正してテストするときは、いちいち保存しなくても大丈夫です。ただし、「Compile」をクリックした時点で保存してあるプログラムが新しいものに書き換えられますので注意してください。元のプログラムを残しておきたいときはコンパイルする前に別の名前で保存してください。

 すべての作業が終わったら、BASCOM-AVR IDEの画面を閉じます(右上の「×」をクリックする)。今回はパソコンからマイコン回路に電源を供給しているので、AVRライターのコネクタを抜くかパソコンの電源を切るとLEDは消えます。AVRライターを切り離してマイコン回路単体で動作させる場合は、ブレッドボードの電源端子に外部からDC5Vを供給します。ラジオじゃないので、安価なスイッチングACアダプタでも大丈夫です。

5. コマンドプロンプトを使ったプログラム書き込み

 Windows XPのコマンドプロンプトを使ってプログラムを書き込むこともできます。当初はBASCOM-AVR IDEを使った書き込みの方法がわからなかったので、もっぱらこちらを用いていました。その後上記の方法を見つけたので、この項はいったん削除したのですが、やはり残しておくことにします。

 機械語への変換までの手順は上記と同じです。機械語への変換が終わったら、ツールバーの「File」(ファイル)から「Open」(開く)を選択してクリックします。ファイル・フォルダの一覧の画面が出ますので、一番下の「ファイルの種類」の欄の右端にある黒い三角をクリックして「All files (**)」(すべてのファイル)をクリックします。画面をスクロールしていくと、「TEST1.HEX」という名前のファイルができているはずです。これが機械語に変換されたプログラムファイルです。これをAVRマイコンICに書き込みます。「TEST1.HEX」を選択した状態を下に示します。

 画面9

 BASCOM-AVR IDEの画面をそのままにしておいて、AVRライターをパソコンとマイコン回路につなぎ、コマンドプロンプトを起動します。コマンドプロンプトの画面を出す方法は「AVRマイコン回路の製作」のページを見てください。

 コマンドプロンプトの「C:\Documents and Settings\(ユーザー名)」の後に「avrezusb.exe」と入力し、続いて半角スペースを入力します。これはAVRライターを動かすソフトを呼び出す操作です。次にBASCOM-AVR IDEの画面を前に出して、上記の「TEST1.HEX」というファイルをコマンドプロンプトの黒い画面の中へドラッグ&ドロップします。すると先程の文字列に続いて「TEST1.HEX」がファイルの場所とともに表示されます。あとはキーボードのEnterキーを押せば書込みが実行されます。

 コマンドプロンプト内に、上記に続いて

と表示され、LEDが点滅を始めれば書き込み成功です。正常に書込みがなされたときのコマンドプロンプト内の様子を下に示します。

 画面10


(以下、2007年1月16日に追記)

6. 画面に行番号を表示する

 私の場合、BASCOM-AVR IDEをダウンロードした時点ではプログラム作成画面に行番号が表示されていませんでした。ちょっと不便だなあと思ったのですが、他のサイトでBASCOM-AVRの解説記事を見たらちゃんと行番号が付いていたので、いろいろ探したら出し方がわかりました。

 ツールバーの「Options」から「Environment (環境設定)」を選択してクリックします。「Editor」というタブが前に出ていると思います。ここでプログラム作成画面に関する各種の設定ができます。左側に並んでいるチェックボックスの一番下「line Numbers」が行番号の有無を設定するところです。行頭の白い四角をクリックしてチェックを入れます。下の図のようになります。

 画面7

 これでプログラム各行の先頭に通し番号が付けられます。先程のプログラムの場合は下のように表示されます。

 画面8