SSブログ

SilentCが使っていないモジュールを探せ(5) [ColdFire V2]このエントリーを含むはてなブックマーク#

2047506

モジュール探訪の旅。 今日は、DMA Timer (DTIM) を走ります。

最初は、レジスタ・ダンプ

DTIMは、一般のタイマとしても使用することが出来るのですが、名前に「DMA」と入っている通り、「DMA」と密接につながってもいます。 まずは、レジスタ領域のダンプ・リストをとります。

40000400  00 00 00 00 ff ff ff ff  ........
40000408  00 00 00 00 00 00 00 00  ........

40000440  00 00 00 00 ff ff ff ff  ........
40000448  00 00 00 00 00 00 00 00  ........

40000480  00 00 00 00 ff ff ff ff  ........
40000488  00 00 00 00 00 00 00 00  ........

400004c0  00 00 00 00 ff ff ff ff  ........
400004c8  00 00 00 00 00 00 00 00  ........

このようにいずれもデフォルトのままで、使われた形跡がありません。 まるごと、使えそうですね。

しつこいけれど、LEDピカピカ

これもタイマに違いは無いので、LEDピカピカに使ってみます。 このタイマのすごいところは、8-bit高級プリスケーラに32-bitタイマ・カウンタを装備しているため、超長時間(81時間以上)のタイマに使えるというところです。 32-bitだと使いにくい用途もあるのか、16-bitモードの設定も装備されています。 これだけの機能があれば、苦も無く正確に250m秒の時間が作り出せます。

DTMR0レジスタ設定の詳細
フィールド備考
PS0xF9 (250-1) プリスケーラの分周比を250に設定します。
CE00 (disable) DTINn端子でのエッジの捕まえ方を指定します。 ここでは、入力キャプチャの機能は使いません。
OM1 (toggle) DTOUTnの出力の仕方を指定します。 パルス状に出されてもLEDで確認できないので、トグルさせることにします。
ORRI0 (disable) 今は、割り込みもDMAも使いません。
FRR1 (enable) このフィールドをセットすると、カウンタがリファレンスに一致したらゼロにリセットされます。 この機能を使うと、「リファレンスの値」+1の周期でイベントが発生します。
CLK01 (BUSCLKx1) プリスケーラをバスクロックで駆動します。
RST0 (reset) → 1 (run) リセットした状態でタイマを設定し、最後にこのフィールドをセットしてタイマを起動します。

出力は、DTOUT0(PTC[0])をトグルして出します。 トグルの周期は、

1 × 250 × 60000 ÷ 60MHz = 250msec

となります。 32-bitのカウンタは、必要ありませんでしたね。 さて、コーディングだ。

main() {
  char *ptcpar = 0x4010006f;
  int  *dtmr0  = 0x40000400;
  long *dtrr0  = 0x40000404;
  long *dtcn0  = 0x4000040c;
  *ptcpar  = 0x02;   // PTCPAR0=10
  *dtmr0   = 0x0000; // software reset
  *dtmr0   = 0xF92A; // See table
  *dtrr0   = 59999;  // period 60000
  *dtmr0  |= 0x0001; // RST=1
  #stop 0
  for(;;){
    if (Getc(0)=='q')break;
    PrNum(*dtcn0);PrStr(" ");Sleep(10);
  }
}

レジスタの設定が終われば、他にすることも無いのですが、タイマカウンタの値を表示しています。 このプログラムの場合も、'q'キーで実行を終了してもLEDはピカピカを続けます。

7行目にDTMR0レジスタに"0x0000"を書き込んでいます。 これは、DTMR0[RST]ビットをクリアすることが他の設定ビットを変更するための条件になっているため、確実にDTMR0[RST]をクリアするための仕掛けです。 この行を入れないと、二度目のプログラムの実行でタイマの設定ができませんでした。 この動きは、ちょっと、バグっぽい気もします。

参考文献

Interface (インターフェース) 2008年 09月号 [雑誌]

Interface (インターフェース) 2008年 09月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2008/07/25
  • メディア: 雑誌

nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。