ワンチップマイクロコンピュータを使った実験装置

第2章 AVRマイクロコンピュータの基本回路を作ろう


2.1 AVRを動かすために必要な回路

 ここではAVRの中でも最もポピュラーなAT90 S2313-10PCを動かしてみることにします。S2313には20本の足(ピン)があり,それぞれのピンの役割が決まっています。まずは,AVRを動かすために最低限必要な,直流5Vの電源とアース,クロック発振子(マイクロコンピュータ内の時間のリズムを設定するための部品)を取り付けます。
 直流電源のプラス端子を20番ピン(VSS)につなぎます。1.5Vの乾電池を4本直列につなぎ,そのまま20番ピンにつないでも動くとは思いますが,普通は3端子レギュレータ(78L05など)を使って,安定した直流電源を作ります。78L05には3本の足があり,入力端子(IN)と出力端子(OUT)にはコンデンサを取り付けます。
 共通のアース(電圧が0Vということ)として,電源のマイナス端子,S2313の10番ピン,78L05のグランド端子(GND),2本のコンデンサ(C1,C2)の一端をつなぎます。これで,マイクロコンピュータへの電源供給は完了です。
 次にセラロックという発振子を取り付けます。セラロックの周波数は,使用するマイクロコンピュータに合わせます。つまり,S2313-10PCでは10 MHzのセラロックを使用します。セラロックには3本の足があります。中央の足をアースに接続し,両端の足(極性がないので左右どちらも同じ)をS2313の4番ピンと5番ピンにつなぎます。
 最後に,リセットスイッチ(SW2)の配線をします。リセットは,パソコンのリセットと同じで,このスイッチを押すとマイクロコンピュータは「再起動」します。S2313では1番ピンがリセットです。通常は5V(VSS)が入力されていて,1番ピンが0V(アース)につながるとリセットされます。リセットスイッチが押されたときに電源がショートしないように4.7kΩ程度の抵抗(R1)を接続しておきます。

Step 1:電源とクロック
(画像をクリックすると大きい画像が表示されます)



2.2 入力のスイッチをつける

 以上の配線が終わればAVRは動きます。しかし,入出力がないので何も起こりません。次のステップでは,入力のためのスイッチを取り付けます。
 今までに使っていないS2313のピンはすべて入出力のピンです。どのピンを入力にしてどのピンを出力にするかは,作成するプログラムで決めることができます。ここでは,2番ピン,3番ピン,6番ピン,7番ピンを入力とします。それぞれのピンには,PD0,PD1,PD2,PD3という名前がついています。「P」はピン,「D」はDポート(S2313にはBポートとDポートがある)という意味です。
 入力用スイッチのつなぎ方にも色々な方法があると思いますが,ここでは,リセットと同様,スイッチが押されていないときに5V(VSS)が入力されていて,スイッチが押されると0V(アース)につながるようにします。したがって,それぞれのスイッチに対して4.7kΩ程度の抵抗(R2〜R5)を接続します。

Step 2:入力用のスイッチ
(画像をクリックすると大きい画像が表示されます)



2.3 出力確認用の発光ダイオードをつける

 実験装置を作る場合,マイクロコンピュータの出力を何に使うのか決めておくことはとても重要です。それについては次章以降で説明することとして,ここでは出力の動作確認をするために発光ダイオード(LED)をつなげることにします。
 入力用スイッチをつけたときと同様,どのピンを出力にするかは作成するプログラムで決めることができます。ここでは,12番ピン,13番ピン,14番ピン,15番ピンを出力とします。それぞれのピンには,PB0,PB1,PB2,PB3という名前がついています。
 発光ダイオードには極性があるので,接続するときには注意してください。極性を間違えても回路が壊れることはありませんが,発光ダイオードは機能しません(光りません)。それぞれの発光ダイオードには470Ω程度の抵抗(R6〜R9)を直列に接続します。

Step 3:動作確認用の発光ダイオード
(画像をクリックすると大きい画像が表示されます)



2.4 プログラム作成の準備

 以上でAVRの基本回路が完成しました。まずはプログラムを作成するための準備をします。ここでは,ATMEL社AVR用BASICコンパイラ(BASCOM-AVR Standard Edition)とAVRライター(AVR-ISP)を使用します。プログラムを作成するには,パソコン(Windowsマシン)が必要です。

(1) BASICコンパイラのセットアップ
 パソコンにAVR用BASICコンパイラをセットアップします。フロッピーディスクを挿入し,setup.exeを実行します。あとは説明書の指示に従ってください。

(2) BASICコンパイラの起動と設定
 BASCOM-AVRを起動します。詳細な設定があるようですが,作者の場合,「Opyion」,「Programmer」のプリンタポート(Parallel LPT-address)だけ設計すれば動きました。

(3) プログラム作成画面
 最初に表示される白い画面にプログラムを打ち込みます。



2.5 簡単なプログラム

 以上で製作した基本回路を使って,発光ダイオードを順番に光らせるだけの簡単なプログラムを作ってみます。作成画面に次のプログラムを打ち込みます。

Config Portb = Output
Config Portd = Input
Do
Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 : Portb.3 = 0
Wait 10
Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 0 : Portb.3 = 0
Wait 10
Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 : Portb.3 = 0
Wait 10
Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 0 : Portb.3 = 1
Wait 10
Loop
End

 これだけのプログラムで,発光ダイオードは順番に光るはずです。簡単にプログラムの説明をすると,最初の1〜2行目にある「Config」という命令はポートを出力に使うか,入力に使うかの設定です。1行目は「ポートBを出力に使う」,2行目は「ポートDを入力に使う」と宣言しているのです。3行目の「Do」と12行目の「Loop」は組になって使われています。「この間の命令を繰り返しなさい」という意味です。4行目の「Portb.0=1」は「ピンPB0を出力する(+5V)」,「Portb.1=0」は「ピンPB0を出力しない(0V)」・・・となります。5行目の「Wait 10」は「10秒間待ちなさい」と言う意味です。もっと小さい数字にすれば発光ダイオードは早く点滅し,大きい数字にすれば遅く点滅します。言うまでもなく,最終行の「End」は「終わり」を意味します(このプログラムに終わりはありませんが)。



2.6 プログラムのコンパイルと書き込み

 作成したプログラムをコンパイルし(マイクロコンピュータに書き込める言語に直すこと),AVRライターでプログラムを書き込みます。

(1) AVRライターの接続
 パソコンのプリンタポートにAVRライターを接続します。AVRライターの電源スイッチを切った状態で,AVRマイクロコンピュータ(AT90 S2313-10PC)を挿入します。そして,AVRライターの電源スイッチを入れれば準備完了です。

(2) コンパイル
 「Compile current file」のアイコンをクリックして,プログラムをコンパイルします。エラーがある場合は画面下にエラーメッセージが表示されます。

(3) 書き込み
 「Run programmer」のアイコンをクリックします。新しく表示される画面の「Auto program chip」をクリックすれば,自動的に書き込みと確認が行われます。

(4) AVRの取り付け
 書き込みが終わったら,AVRライターの電源スイッチを切ってからAVRをはずします。このときAVRのピンを壊さないように気をつけましょう。そして,作成した回路にAVRを挿入し,回路の電源スイッチ(SW1)を入れると,発光ダイオードが順番に点滅するはずです。



2.7 おわりに

 AVRマイクロコンピュータを動かすことは,それほど難しいことではないことがおわかり頂けたと思います。最後に,少しだけ複雑にしたプログラムを紹介します。それほど複雑なプログラムではありませんが,このプログラムでパルスモータを駆動することができるのです。

Config Portb = Output
Config Portd = Input
Dim T As Byte '0 - 255
'
Do
If Pind.2 = 0 And Pind.1 = 0 And Pind.0 = 1 Then T = 80
If Pind.2 = 0 And Pind.1 = 1 And Pind.0 = 0 Then T = 70
If Pind.2 = 0 And Pind.1 = 1 And Pind.0 = 1 Then T = 60
If Pind.2 = 1 And Pind.1 = 0 And Pind.0 = 0 Then T = 50
If Pind.2 = 1 And Pind.1 = 0 And Pind.0 = 1 Then T = 40
If Pind.2 = 1 And Pind.1 = 1 And Pind.0 = 0 Then T = 30
If Pind.2 = 1 And Pind.1 = 1 And Pind.0 = 1 Then T = 20
'
Portb.0 = 1 : Portb.1 = 0 : Portb.2 = 0 : Portb.3 = 1
Waitms T
Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 0 : Portb.3 = 0
Waitms T
Portb.0 = 0 : Portb.1 = 1 : Portb.2 = 1 : Portb.3 = 0
Waitms T
Portb.0 = 0 : Portb.1 = 0 : Portb.2 = 1 : Portb.3 = 1
Waitms T
Loop
End

 最初のサンプルプログラムに,入力用スイッチ(PD0〜PD04)を判断する機能を付け加えました。3行目の「Dim」は変数を設定する命令です。ここでは,「変数TをByte(0〜255の整数)として使う」という意味です。6〜13行目の「If〜then」は条件と判断を示しています。ここでは,PD0ピン〜PD04ピンの状態を見て,その状況に応じて変数Tの値を決めています。なお,「Waitms」は1ms単位の待ち時間を表しています。


[ Previous ] [ Microcomputer ] [ Next ]
[ Hirata HOME ] [ Power and Energy Engineering Division ] [ NMRI HOME ]
Contact khirata@nmri.go.jp