極めて簡単な応用例 −−LEDの点滅とAVRstudio・winAVRの使い方−− (WinAVR20050214)

 ライタのテストを兼ねて、入力デバイスなし、出力デバイスはLED 4個という回路を作りました。 この回路は一般の書き込み、たとえばライタのファームウエアを作るときなどにも使えます。
はじめに作った基板は改造したのでブレッドボードに組んでみました。この大きさのブレッドボードは簡単な実験に ちょうど良い大きさだと思います。
 
 
上の図、右側にISPコネクタの接続を示します。基板を上から見て(接続するメス側から見て)このような配置にし ます。reset端子は必ず抵抗をいれてVccにつなぎます。 ISPではVccとGNDを除く4本の信号線のターゲットICから見た 負荷(接続)状態が書き込み機と周辺デバイスが衝突しないか、衝突しても影響が現れないようにしなければなりません。 ここではresetピン以外は接続されていないし、resetは10kΩが入っているから大丈夫です。

では、この4個のLEDが点滅するプログラムをAT90S2313に書きましょう。C言語では使えないので90S1200は使いま せんでした。AVR studioを使ったアセンブラとwinAVRを使ったCコンパイラの両方を調べます。

AVR studio(アセンブラ)で作る
(注:05.03.06 studioがver4.11になって様子が変わりました。ずいぶん便利になりました。日本語コメントもokに なっています。最近はアセンブラは全く使わないのですが、新しいバージョン用に書き換えました。)
@ まず、ソフトウエア保存の準備をしましょう。一つのプログラムについて多くのファイルができますので、 プログラムごとにフォルダを用意するにします。好みのフォルダ(例えば C:\prog)に ledtest というフォルダを作ります。 ハードウエアはまだ繋ぎません。
A AVR studio 4 を起動します。ショートカットをデスクトップに作っておくと便利です。 起動したAVR studio に プロジェクト ウィザードの画面が出るでしょう。次の図に従ってLEDtestという名前のプロジェクトを設定します。


B次の画面に変わります。図の中に示すように、ここのプログラムをエディタにコピーしてください。



Cツールバーの project から build を実行します。一番下の行に次のメッセージが出れば成功です。



(エラーが表示されたら、その行をダブルクリックするとソースのその行に印ができます。修正したらbuild仕直します。)
これでアセンブルは終わりました。ledtest フォルダを見てください。.hex ファイルをはじめ多くのファイルができているでしょう。
以前のバージョンですと、日本語が文字化けする、インクルードファイルを準備しないとエラーになる、hexファイルを指定しないと作ってくれない、 などの不便があったのですがずいぶん良くなりました。ソースを修正してbuildするとソースファイルも更新されています。自動的にセーブされるわけです。
D ここから書き込みに入ります。コンピュータのシリアル端子からDsub9ピンでアプリケーションノート910のライタに繋ぎ、ライタの ピンソケットを「きわめて簡単な応用例」基板に繋ぎ、90S2313を挿入した上で、LED基板に5ボルトの電源を加えてください(3〜5V可)。 誤接続を防ぐために双方の1番ピンに印を付けています。
Etoolメニューから、Avr progを起動します。すべてがうまく働いたとき、書き込みプログラム(Avr Prog)が起動されます。ライタが接続されていない、 電源がつながっていない、すでに avrprog が起動している(よくあります。下のタスクバーにないことを確認してください。)時はエラーになります。


ここからライタソフト avrprog の世界になります。これはstudio4がよくなったのに比べ、のんびりしています。
書き込むhexファイルを指定して(よく忘れるので注意)、ターゲットのマイコンの種類を確認する事を忘れないように。(面倒だけれど)   ここで書き込みボタン(FlashのProgram)を押します。

F無事に書き込めたらLEDが点滅します。点滅しないときは書き込みコネクタをはずしてみます。
○余裕ができたら、プログラム(.asm)の部分を変更してみます。AVR studioを立ち上げたとき、projectでopenを選びます。
今回はプログラムをコピー&ペーストで書き込みましたが、自分で作るときは同じ場所に書いて行きます。書き方は、いろいろなページを参考に調べてください。 困ったときはメールをいただいて結構です。(もっともアセンブラで殆ど書かないので頼りないものですが。)


winAVR(C言語)で作る WinAVRで書くことを勧めます。覚えておくことが俄然少ないからです。

PCの準備:作業の流れをよくするために次のような準備をしています。
  1 これから作るプログラムの置き場所(フォルダ)を決めます。E:\winAVR を作ったので E:\winAVR\0prog にしました。
    この中にプログラム1つにつき1つのフォルダを作ります。
  2 DOS窓を使いますから、「コマンドプロンプト」のショートカットをデスクトップに作ります(winXPです)。
  3 書き込みソフトのavrsp.exeそのものをデスクトップにコピーしておきます。ショートカットではありません。
  4 「えるのーと」エディタのショートカットをデスクトップに作ります。(「えるのーと」はなくなりました)

準備ができたら、プログラムの置き場(私はE:\winAVR\0progです)にフォルダcLEDtestを作ります。この中に1つのプログラムに関係する 多くのファイルが入ることになります。
@エディタ「えるのーと」を立ち上げ、ここにあるサンプルプログラムをコピーします。
Aこのテキストを cLEDtest.c の名前でフォルダcLEDtestに保存します。「えるのーと」は .c ファイルだとそれらしく 色分けして表示しますテキスト画面を終了して、  cLEDtest.c  えるのーとのショートカットアイコンにD&Dしてみてください。 見やすい画面になるでしょう。
B次にmakefileを用意します。winAVR\sample\makefile をフォルダcLEDtestにコピーして編集します。
 43行目 MCU= にAT90S2313 と書き、59行目 TARGET= にcLEDtest と書きます。(コンパイルする.cファイルの".c"を除いて書く。)  それ以外はファイル名を含めて一切変更してはなりません。
 これであとはカレントディレクトリをこのフォルダに移してmakeを実行すればよいのですが、面倒ですからバッチファイルを作っています。
Cエディタを起動して以下の3行の//より前の部分を書きます。
  E:        //カレントドライブをE:に切り替えます。私のファイルがE:\winAVR\0prog\cLEDtest にあるからです。
  cd E:\WinAVR\0prg\cLEDtest   //カレントディレクトリを自分のプログラムのある場所に移動します。
  make       //makeを実行させます。
このテキストをmc.bat(mcは何でも良い)の名前でプログラムのあるフォルダに保存します。
この結果、1つのプログラムが入るフォルダには .cファイル、makefile、mc.batの3つのファイルができました。これから作るフォルダ のすべてにこの3つのファイルが含まれることになります。新しいプログラムを書くときはこのmakefileとmc.batを新しいフォルダにコピー して、makefileの MCU= とTARGER= 、mc.batのプログラムディレクトリ(フォルダ名)を変更して使っています。もっとスマートな 方法があるのかもしれませんがにわか勉強でまだ知りません。(分かったら教えてください。)
Dコンパイルします。コマンドプロンプトをショートカットから立ち上げて黒い窓を表示します。その窓の中に、mc.batをD&Dします。 念のため窓の中で1クリックして間違いなくカレントを移し、enterキーを押します。いろいろな表示があって最後に Erroors: none と表示が あれば成功です。エラーがあれば、DOS窓を最小化してタスクバーに落とし、.cファイルを修正します。上書き保存して、タスクバーからDOS窓を 呼び出して、「F3キー」を押して(先ほどの入力をリピートしてくれる)enterキーで再度コンパイルします。

E,hexファイルをAVRに書き込みます。ライタはChaNさんのavrsp.exe用を使います。 先ほどのプログラムのあるフォルダにcLEDtest.hexというhexファイルができているはずです。 コマンドプロンプトを新しく起動して、デスクトップにあるavrsp.exe(ショートカットではない。念のため)をD&Dします。 スペースを1つ書いてから目的の cLEDtest.hex をD&Dします。
ターゲット回路とライタをつなぎ、電源を入れて、ライタの 書き込みスイッチをONにしてenterキーを押します。成功しなかったら、回路を点検して、F3キーで再度書き込みます。
○avrsp.exeにhexファイルを指定しないとヘルプが表示されます。有用です。



TOPへ

inserted by FC2 system