[H8-ML(1109)] RE: [H8-ML(1106)] Re: 内蔵I/O編 2.14 ブロック転送について
From: "Kohya Gotoh" <hoshikage@xxxxxxxxx>
Date: 2001年04月25日(水)05時02分07秒
廣田さん、ありがとうございます。後藤です。

> > おお、DREQ割り込みで動作してますね。
> > ただ、そのままだと
> >   ■1回しかDMA出力しない。
> >     (これは、CRCのIフラグが1のままだからですよね)
>  DMAはCCRの割り込みマスクビットに関係なく動作するはずです。 
ハードウエアマニュアルの5.割込みコントローラー 頁5-10のビット5の説明を見ると
"IPRB5|DMACの割込み要求はプライオリティレベル0(非優先) (初期値)"
と記載されてます。ところが"(非優先)"についてのコメントが
マニュアルに見当たりません。
"(非優先)"ってのが"関係なく動作する"って事ですか?

> DMA終了の割り込みがCPUに届かないだけです。
> DREQpinにスイッチなどでDMA要求を入力すると、スイッチのチャタリングで
> 要求が複数回掛かってしまい、DMACが複数回転送動作をやってしまいます。
> この転送時間はスイッチのチャタリングより遙かに短い時間です。
参考になります。

> >   ■PA-0だけ、電源投入直後(割込み前)既に"Hi"状態です。
>   初期化して出力設定、0データ出力までの間は入力ですからオシロ等で
> さわると不安定になります。が、完全にHIGHならどこかとショートも
> 疑いましょう。
電源投入してからおもむろにさわってもやっぱり"Hi"なんです。

> > PA-0のポートだけ、0の出力設定のはずなのに"Hi"で出力されてる
>  DMA前に、デバッグモニタ等でポートAを読み書きしてみて正常に
> 動くか確認がさきですね。
P5に付いてるLEDで確認できればと、下記のプログラムで確認しました。
AKI-H8のプッシュSW1でPAを制御しPAをLEDでモニターしてます。
これだと正常にSWのON/OFFでLEDがON/OFFしますから
正常なように思えます。

ところで↓ここに"モニタプログラム"なるものがありますけど、
こんなの使えるんですか?
http://www.hitachi.co.jp/Sicd/Japanese/Seminar/downh83h.htm
なんかハードル高そうですね(@_@)

-----<<以下確認プログラム>>-----

;************************************************
;*				*
;*	VECTOR ADDRESS		*
;*				*
;************************************************

	.CPU	300HA

	.SECTION	VECT,CODE,LOCATE=H'000000

RES	.DATA.L	CHKPA

;************************************************
;*				*
;*	SYMBOLDEFINITIONS		*
;*				*
;************************************************

;**************** PORT4 *************************
P4DDR:	.EQU	H'FFFFC5
P4DR:	.EQU	H'FFFFC7
P4PCR:	.EQU	H'FFFFDA
S4:	.EQU	7		;Push SW
S3:	.EQU	6
S2:	.EQU	5
S1:	.EQU	4
;**************** PORT5 *************************
P5DDR:	.EQU	H'FFFFC8
P5DR:	.EQU	H'FFFFCA
P5PCR:	.EQU	H'FFFFDB
LED2:	.EQU	1		;LED
LED1:	.EQU	0
;**************** PORTA *************************
PADDR:	.EQU	H'FFFFD1
PADR:	.EQU	H'FFFFD3

;************************************************
;*				*
;*	MAIN PROGRAM : CHKPA		*
;*				*
;************************************************

	.SECTION	PROG,CODE,LOCATE=H'010000

CHKPA:	.EQU	$
	MOV.B	#B'11111111,R0H
	MOV.B	#B'00000000,R0L

	MOV.B	R0H,@P4PCR		;プルアップを設定
	MOV.B	R0L,@P4DDR		;入力に設定
	MOV.B	R0H,@P5DDR		;出力に設定
	MOV.B	R0H,@PADDR		;出力に設定

CHKPA99:
	MOV.B	@P4DR,R0L
	SHAR.B	R0L		;プッシュSWの値をを4ビット右にシフトしてS1をビット0に合わせる
	SHAR.B	R0L
	SHAR.B	R0L
	SHAR.B	R0L
	NOT.B	R0L

	MOV.B	R0L,@PADR
	MOV.B	@PADR,R0L
	MOV.B	R0L,@P5DR

	BRA	CHKPA99

	.END

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


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


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