Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GB002 Timer1の割り込みで作る時間

PIC24FJ64GB002に以下のようなプログラムを書き込んで6ピンにつないだLEDの点滅する間隔を考える。
Configuration Bitsは長くなるので関係あると思われる1行だけを書いた。
回路図は前回の「PIC24FJ64GB002 簡単なコードを」にあるのと同じだ。

まず前提だが、データシートには以下のようにある。
pic24fj64gb002_timer1_int_01
8ビットのPICでのおなじみは FOSC/4 だが、ここでは FOSC/2 だ。
実は、このせいで計算結果と測定結果が合わなくて、だいぶ長いこと悩んだ。
初期設定では RCDIV = 0b001 のようなので、明示的に設定していなければクロックは 4MHz のはずだ。
pic24fj64gb002_timer1_int_02
PR1 = 0x7FFF としているので、32768カウントすると割り込みが発生する。
プリスケーラは 1:256 と設定してある。

以上から、4000000 / 2 / 32768 / 256 = 0.238 となって、この逆数である、4.194秒毎に割り込みルーチンが呼ばれることになる。
したがって、LEDが点灯して消えて次に点灯するまでの時間は約8.39秒となる。
実測すると、8.37秒だったので、以上の理解でよろしいんではないかと…。

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GB002


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.