SSブログ

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

2047506

モジュール探訪の旅。 今日は、Pulse-Width Modulation (PWM) を走ります。

最初はレジスタ・ダンプ

PWMは、レジスタに設定した値に従って、パルス波形を作ります。 こういったモジュールなら、SilentCからでも簡単に使えそうです。 まず、レジスタ領域のダンプをとりました。

401b0000  00 00 00 00 00 00 00 00  ........
401b0008  00 00 00 00 00 00 00 00  ........
401b0010  00 00 00 00 ff ff ff ff  ........
401b0018  ff ff ff ff ff ff ff ff  ........
401b0020  ff ff ff ff 04 00 00 00  ........

全く使われていないようで、デフォルトのままです。 ただ一箇所だけ、PWM7INビットがセットされているのがデフォルトから変わっています。 このビットはPWM7端子の状態をモニタするためのRead-onlyビットなので、このような値が返ってきたのでしょう。 でも、PWM7端子は、どこにも割り当てていないんだけどな?

おなじみ、LEDピカピカ

SilentCでは、使っていないらしいので、PWMモジュールを使って恒例のLEDピカピカをプログラムしてみます。 PWM出力は、いくつかの端子から出すことが出来るのですが、先人に倣ってPNQ[1]端子から出力してみます。

PWMを8-bitで使った場合の最大周期を計算すると

128 × 256 × 2 × 255 ÷ 60MHz = 279msec

だいたい3.6Hzの点滅になります。 ちょっと早いかもしれないけれど、この設定でやってみます。

main(){
  int  *pnqpar   = 0x40100068;
  char *pwme     = 0x401b0000;
  char *pwmclk   = 0x401b0002;
  char *pwmprclk = 0x401b0003;
  char *pwmscla  = 0x401b0008;
  char *pwmcnt1  = 0x401b000d;
  char *pwmper1  = 0x401b0015;
  char *pwmdty1  = 0x401b001d;
  *pnqpar   |= 0x000C; // PNQPAR1=11 (tertiary:PWM)
  *pwmclk    = 0x02; // PCLK1=1 (clock SA)
  *pwmprclk  = 0x07; // PCKA=111 (x128)
  *pwmscla   = 0x00; // SCALEA=0 (x256)
  *pwmper1   = 0xFF; // PWMPER1=255
  *pwmdty1   = 0x7F; // PWMDTY1=127 (50%)
  *pwme     |= 0x02; // PWME1=1 (enable)
  #stop 0
  for(;;){
    if (Getc(0)=='q')break;
    PrNum(*pwmcnt1);PrStr(" ");Sleep(10);
  }
}

コンソールには、PWMカウンタの値を表示しています。 コレぐらいなら、簡単だね。 このPWMモジュールは、ソフトウェアと無関係に動作するので、'q'キーでプログラムの実行が終了した後もLEDの点滅を続けます。

参考文献

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

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

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

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

nice! 0

コメント 2

orya

その節はどうもありがとうございました。
現在、SDメモリを検討していて、また参考にさせていただきますm(__)m
by orya (2009-03-24 23:43) 

noritan

orya さん、いらっしゃいませ。
色々と気が散ってしまうタチなので、ColdFireは現在休止状態です。
何かおもしろい疑問がありましたら、気を散らせるかもしれませんので、どしどしお知らせください。

by noritan (2009-03-26 10:21) 

コメントを書く

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

トラックバック 0

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

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