[H8-ML(1099)] Re: 内蔵I/O編 2.14 ブロック転送について
From: 廣田 正孝 <mhirota@xxxxxxxxxxxxx>
Date: 2001年04月21日(土)10時25分53秒
 こんにちは、廣田@本庄です。
Kohya Gotoh wrote:
> 
> お世話になっております。後藤です。
> 日立マイクロコンピュータ H8/300Hシリーズ 内蔵I/O編
> 第2版 2.基礎編 2.14 ブロック転送についての質問です。
> 
> ■ポートAの0(AKI-H8 MBでは、CN1の8PIN)の出力だけ
> 反転してしまいます。なぜでしょうか?
> 
 リストを細かく見るのは面倒なので、見ませんが、後藤さんは
このサンプルプログラムのメインルーチン部分が割り込み処理も兼ねて
いる事を理解していますか?
 後藤さんのプログラムの割り込みベクタにはDMACからの割り込み
処理ベクタが書かれていませんね。 これでは割り込み条件が
揃った瞬間から後の動作は保証されません。
サンプルプログラムはリセットからの最初のループで初期設定し、外部要因
からのDREQを待っています。
DREQが発生し、CPUの知らない間にDMAが終了し、転送終了したことを告げる
割り込みが発生します。 割り込みが発生するとリセットからのループに
再び飛び込みまた初期設定して、DMA終了を待つ。
という動作を繰り返しているのです。

あと
>         BCLR    #DTME,@DTCR0B   ;転送禁止
>         BCLR    #RESERVE,@DTCR0B        ;リザーブ
>         BCLR    #DAID,@DTCR0B   ;MARB固定
>         BCLR    #DAIDE,@DTCR0B  ;〃
>         BSET    #TMS,@DTCR0B    ;ソース側
>         BSET    #DTS2B,@DTCR0B  ;立下りエッジ
>         BSET    #DTS1B,@DTCR0B  ;〃
>         BCLR    #DTS0B,@DTCR0B  ;〃
> 
>         BCLR    #DTE,@DTCR0A    ;転送禁止
>         BSET    #DTSZ,@DTCR0A   ;ワード
>         BCLR    #SAID,@DTCR0A   ;転送終了後MARAをインクリメント
>         BSET    #SAIDE,@DTCR0A  ;〃
>         BCLR    #DTIE,@DTCR0A   ;割込み禁止
>         BSET    #DTS2A,@DTCR0A  ;フルアドレス
>         BSET    #DTS1A,@DTCR0A  ;〃
>         BSET    #DTS0A,@DTCR0A  ;ブロック
という記述は感心しません。 本来1ステップで済むレジスタ設定を各ビット
毎に設定しているのでプログラムステップの無駄遣いですし、実行速度
も遅くなるし、プログラムの可視性も悪い。 メリットは無いです。

-- 
/******************************************************************************
Name: 廣田 正孝 "Masataka Hirota"
E-mail address:  mhirota@xxxxxxxxxxxxx
                 GCD03040@xxxxxxxxxxx
******************************************************************************/
スレッド概略
[1098(R)](起点)
 └[表示中]
   └[1100(1)]


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


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