[H8-ML(1105)] RE: [H8-ML(1104)] Re: 内蔵I/O編 2.14 ブロック転送について
From: "Kohya Gotoh" <hoshikage@xxxxxxxxx>
Date: 2001年04月24日(火)16時41分49秒
廣田さん お手数をおかけしてます。
後藤です。(^_^;)ゞ

> > もしくは、下のCPU割り込みを消しとけば良かったんですね
> > "138            BSET    #DTIE,@DTCR0A"
>  消すと、DMA終了後の割り込みが発生しなくなりますから、1回目の
> DMA終了後の割り込み時のDMAC初期設定が出来なくなり、動きが
> 変わってきてしまいます。
送信後、気が付きました。
自己フォロー送信したんですけど入れ違いだったかな。

> > もともとのプログラム、
> > アプリケーションノート 内蔵I/O編 163ページには
> > "128            BTST    #DTME,@DTCR0B"
> > と記述されてます。NIM割込みを使うって事ですよね。
>  違います。NIM(NMIの間違い?)なんて使っていません。マニュアルの
-----<<割愛>>-----
>  ここで、DTMEビットをチェックしているのは、単にDTMEビットが
> LOWになるのを待っているだけです。
私、大きな勘違いしてたんですね^_^;
てっきりここでNMI割込みを待ってるのかと思っちゃってました。

> なぜ、ここに待ちループがあるのかは解りません。
???
> どちらにしても
> 数行前でDTMEビットを0に設定していますから0のはずでこのループ
> はループしないでしょう。
了解しました。

> > だけど、アプリケーションノート 内蔵I/O編 157ページには、
> > 外部信号としてDREQを使うようになってます。
-----<<割愛>>-----
>  DREQ0pinはDMACが監視しているpinですからCPUのプログラムで
> 監視する必要はありません。
> DMA=CPUが知らないところで起動し、実行し、終了し、終わった事を
> CPUに知らせるのです。
目から鱗です。(゜o゜)

ということで、
日立マイクロコンピュータ H8/300Hシリーズ 内蔵I/O編
第2版 2.基礎編 2.14 ブロック転送の元のプログラムに戻して
動作させてみました。
-----<<ごぞごぞ>>-----
おお、DREQ割り込みで動作してますね。
ただ、そのままだと
  ■1回しかDMA出力しない。
    (これは、CRCのIフラグが1のままだからですよね)
  ■PA-0だけ、電源投入直後(割込み前)既に"Hi"状態です。

> LEDがつかない原因は今までのお話から推測出来ます。
> だめもとですが、
-----<<割愛>>-----
> 原因はBLKMN2:ラベルの上の3行にあるはずです。
DEND割込み後、LEDを自分でOFFしてるって事ですね。
だけど、BLKMN01:の前に↓を追加するまで 割込みは機能してなかったんですよ。
"	ANDC	#B'01111111,CCR"
それと LEDが点灯しないのが問題じゃなくって
PA-0のポートだけ、0の出力設定のはずなのに"Hi"で出力されてる
のが分からないんです。

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


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


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