廣田さん お手数をおかけしてます。
後藤です。(^_^;)ゞ
> > もしくは、下の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"で出力されてる
のが分からないんです。