[H8-ML(1723)] Re: AD変換スキャンモード
From: FUJIHARA Keiichi <keiichi@xxxxxxxxxxxxx>
Date: 2002年04月11日(木)18時04分08秒
 藤原と申します。
 かなり問題がありそうな気がするのですが……

This message is reply to 伊藤 誠一 - san
(Subject was : [H8-ML(1722)] AD変換スキャンモード)

Message-ID: <F2673Ca3ayxAohRUSbS000021b1@xxxxxxxxxxx>
in Thu, 11 Apr 2002 15:19:32 +0900 ...

1.ベクターテーブルがないと動きませんが、きっとどこかに定義してある
  のですよね


> SW5	.EQU	H'FFEF10	;SW5の状態を記憶するRAMの番地
> P2DR	.EQU	H'FFFFC3	;ポート2の入力データレジスタを指定する番地
> P2DR	.EQU	H'FFFFC6	;ポート5の入力データレジスタを指定する番地

2.RAM 領域を .EQU で定義するのは止めましょう。(SW5)
  .EQU でアドレスを定義するのは、データレジスタのように、本来的に
  アドレスが固定されているものだけです(定数もありますが)
  RAM の確保には、サイズに応じた .RES 擬似命令を使いましょう。

> 	MOV.B	#H'00,R0L	     ;ポート2(SW-5に接続)を入力に設定するため
> 	MOV.B	R0L,@H'FFFFC1	;コントロールレジスタにH'00を書き込む
> 	MOV.B	#H'FF,R0L	     ;ポート2をプルアップに設定するため
> 	MOV.B	R0L,@H'FFFFD8	;コントロールレジスタにH'FFを書き込む


3.というわけで、コントロールレジスタのアドレスこそ、シンボルで定義しま
  しょう

> S5CHK:	MOV.B	@P2DR,R0L	     ;SW5の状態をR0Lに読み込む
> 	MOV.B	@SW_D5,R0H	;SW_D5の内容をR0Hに読む
> 	CMP.B	R0H,R0L		;両者を比較する

4.SW_D5 は、SW5 のミスだとして、これではスイッチの状態は読めません。
  まあ動くかもしれませんが。
  SW5 の内容は、必ず「0」で、そのままですね。

> ;-----タイマ-----
> 
> TIME00:	MOV.L	#H'1900,ER6	;4mS TIMER
> TIME01:	SUB.L	#1,ER6
> 	BNE	TIME01
> 	RTS

5.一見独立して見えるプログラムを、他のサブルーチンの一部にすることは
  間違いの元です。
  サブルーチン、AD のなかで、明示的に TIME00 を呼びましょう。
  いずれ、他のサブルーチンで 4ms のタイマが欲しくなり、TIME00 を呼ぶこ
  とがあるでしょう。
  そうなってから、AD のサブルーチンの一部だと思って、時間を変えたりする
  と、正体不明のバグに悩まされることになります。

6.お勧めは(デバッガのようなものがあると仮定して)

  1)1チャンネルのAD変換を行うプログラムを作る。
    1チャンネルのAD変換が終わったら、無限ループなどで停止させる
    デバッガを併用して RAM の中身を見るなどして、AD変換の結果を
    確かめる。

  2)それとは別に、シリアルで1バイト出力するだけのプログラムを作る。
    シリアルの出力結果をパソコン etc. で確認して、正しく出力がされ
    ていることを確かめる

  3)さらに、スイッチの動作を確認するためのプログラムを作る。
    スイッチを押すたびに、LED(ついてるのだろうか?)が点滅を
    繰替えすようなものがわかりやすいと思う。

  4)ここまでできたら、3本をつないで、スイッチの操作で1チャンネルだ
    けAD変換→シリアル出力を行うプログラムを作る。

  5)(この項目は異論があると思いますが、慣れるまでは許されるでしょう)
    1チャンネルだけAD変換するプログラムを、コピーして、変えるとこ
    ろは変えて、4つつなぐ。
    これで、4チャンネルのAD変換をするプログラムができる。

  6)最後に、ちゃんとプログラムの構造に気をつけて、完成品にする。

 こういうステップを踏まないと、チェックすることが多すぎて、大変ですよ。

-- 
_/ -- Last  1682 hours until 2002 World Cup final (11 Apr @399) ------
_/ FUJIHARA Keiichi
_/ E-Mail : keiichi@xxxxxxxxxxxxx <or> nagi@xxxxxxx
_/ URL    : http://www.keiichi.fujihara.name/
--------------------------------------------+----- Luna Phase 28.26 --
PGP FingerPrint = 7CC3 4F95 8CC7 87D3 7178  C348 CD65 7F08 D68F 69F6


スレッド概略
[1722(R)](起点)
 └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]