5.2 コントロール/ステータスレジスタ(ADCSR)に制御コードを書き込む



表1のレジスタ10個のうち,ADDRAH〜ADDRDLまでの8個は,A/D変換結果のデジタル出力を格納する出力用レジスタです.Hレジスタ/Lレジスタ2個1組で16bitレジスタを構成しA〜Dの4グループがあります.そしてA/D変換出力の10bitデータはこのペアレジスタの 上位10bit に書き込まれます.したがって,Lレジスタの 下位6bitは無効 ですから,データ取り込みのときには注意して下さい.なお,AN0入力をA/D変換した結果はADDRAH〜ADDRALに書き込まれます.

 変換器は1個です.入力端子を切り替えながら連続して変換できますが,変換にかかる時間は,1チャネルの変換時間×チャネル数になります.プログラムの介在なしで連続4チャネルの結果を保存できます.結果はADDRA〜ADDRDに端子ごとに記憶されています.入力端子と結果を格納するレジスタの関係は固定です.

・A/D返還結果の格納先
AN0またはAN4→ADDRAH,ADDRAL
AN1またはAN5→ADDRBH,ADDRBL
AN2またはAN6→ADDRCH,ADDRCL
AN3またはAN7→ADDRDH,ADDRDL

A/D変換するアナログ信号を入力する端子はポート7と兼用です.アナログ入力中はポート7の機能は使えません.

表5.1 A/Dコンバータの各種レジスタ

アドレス 名称 略記号 R/W 初期値
H'FFFFE0 A/DデータレジスタAH ADDRAH R H'00
H'FFFFE1 A/DデータレジスタAL ADDRAL R H'00
H'FFFFE2 A/DデータレジスタBH ADDRBH R H'00
H'FFFFE3 A/DデータレジスタBL ADDRBL R H'00
H'FFFFE4 A/DデータレジスタCH ADDRCH R H'00
H'FFFFE5 A/DデータレジスタCL ADDRCL R H'00
H'FFFFE6 A/DデータレジスタDH ADDRDH R H'00
H'FFFFE7 A/DデータレジスタDL ADDRDL R H'00
H'FFFFE8 A/Dコントロール/ステータスレジスタ ADCSR R/(W) H'00
H'FFFFE9 A/Dコントロールレジスタ ADCR R/W H'7F
略称 ADDR*H ADDR*L
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADDR* AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 - - - - - -
初期値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A/D変換した結果のデータ リザーブビット

A/Dデータレジスタ : ADDR*H, Lのビット配置.(ただし*はA〜Dのいずれかが入る)

A/Dコントロール/ステータスレジスタ(ADCSR)

 動作モードの設定,変換作業開始,割り込み許可/不許可,A/D変換終了フラグの取得等の目的に使われるコントロール兼ステータス(状態監視)レジスタです.
  A/D変換動作を「単一モード」で,さらに「AN0入力」に設定するには,ADCSRのbit0〜2に「000」を書き込みます.
  A/D変換を開始させるには,ADCSRのbit5を1にセットします.また,A/D変換が終了したかどうかは,bit7(A/D変換終了フラグ)が1になったかどうかで調べます.

Bit 7 6 5 4 3 2 1 0
ADCSR ADF ADIE ADST SCAN CKS CH2 CH1 CH0
チャネル0のみ,単一モードで使用する場合 初期設定(ADCSR初期値) 0 0 0 0 0 0 0 0
AD変換開始 0 0 1 0 0 0 0 0
AD変換が終了したとき 1 0 0 0 0 0 0 0
データ取り出し後,フラグをクリア 0 0 0 0 0 0 0 0
チャネル0-3を,スキャンモードで使用する場合 初期設定 0 0 0 1 0 0 1 1
AD変換開始 0 0 1 1 0 0 1 1
AD変換終了するとこのようになる 1 0 1 1 0 0 1 1
データ取り出し後,フラグをクリア 0 0 1 1 0 0 1 1
AD変換を終了 0 0 0 1 0 0 1 1
ADCSRの各機能の説明
bit7: ADF (A/Dエンドフラグ)
A/D変換が終了したことを示すフラグです.A/D変換が終了すると「1」が格納されます.
スキャンモードでは4チャネルすべてのA/D変換が終了したときに「1」が格納されます.
ADFビットはプログラムで0にしないと自動的にはクリアされません.
bit6: ADIE (A/Dインタラプトイネーブル)
A/D変換の終了で割り込み処理を発生させるかどうかを設定します.
「1」を書き込むことで変換終了による割り込みを許可します.(本実験では0に設定します)
bit5: ADST (A/Dスタート)
A/D変換の開始/停止を設定します.「1」で開始,「0」で停止です.
単一モードではA/D変換終了後自動的に「0」にクリアされます.
スキャンモードではADSTを「0」にするまで選択されたチャネルを順次変換します.
bit4: SCAN (スキャンモード)
指定チャネルを単一モードとしてA/D変換をするか,スキャンモードとしてA/D変換をするかを設定します.
bit3: CKS (クロックセレクト)
A/D変換の時間設定を行います.
「0」で266クロック,「1」で134クロックに設定します.クロックはCPU動作クロックです.
bit2〜0:CH2〜0(チャネルセレクト)
単一モードで使用するか,スキャンモードで使用するかを設定します.
また,AN0〜7のどの入力端子を使用するかを設定します.
CH2〜0の設定
グループ選択 チャネル選択 説明
CH2 CH1 CH0 単一モード スキャンモード
0 0 0 AN0 AN0
0 0 1 AN1 AN0,AN1
0 1 0 AN2

AN0,AN1

0 1 1 AN3 AN0-AN3
1 0 0 AN4 AN4
1 0 1 AN5 AN4,AN5
1 1 0 AN6 AN4 - AN6
1 1 1 AN7 AN4 - AN7
・動作モードと変換スタート,変換後の動作を表にまとめて表示します.
モード 変換 スタート 停止
単一モード 指定した1チャネルのみ ADST=1 変換後自動停止
スキャンモード 指定したチャネルまで最大4チャネルを繰り返し変換 ADST=1 プログラムでADSTを0に設定

[山口研究室] <back | index | next >