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