セラロックのみの時の見直し

PIC時計をセラロックのみでタイマー0で動かしていた時の処理を見直してみた。

タイマーのインターバルの計算部分を抜き出してみると、以下のように定義してある。

// タイマーの設定
#define PERIOD	1000000		// period in uS - one second here
#define XTAL	4000000		// crystal frequency - 4MHz

#define IPERIOD	(4 * 1000000 / XTAL)	// Period of instruction clock in uSeconds

#define SCALE    256	// Timer 0 prescaler
#define T0_TICKS 256	// Number of counts for interrupt

#define TICK_PERIOD (SCALE * IPERIOD)	// Period (uSec) of one increment of timer 0

#define	RELOADS	((PERIOD/T0_TICKS)/TICK_PERIOD)

これらの#defineをちゃんと計算してみると、以下のようになる。

IPERIOD = (4 * 1000000 / XTAL) = 1
TICK_PERIOD = (SCALE * IPERIOD) = (256 * 1) = 256
RELOADS = ((1000000/256)/256) = 3906.25/256 = 15.2587890625

このRELOADSが割り切れないから正確じゃないんじゃないかと思う。
プリスケーラーとか調整してうまく設定できないのかな?
1000000を分解すると64×25×25×25となるから、タイマー1みたくタイマーのカウンターを設定できればいけるんじゃないかな?
水晶発振子のチェックが終わったら試してみよう。

カテゴリー: PIC, 今後の予定, 部品 タグ: , , パーマリンク

1 Response to セラロックのみの時の見直し

  1. ピンバック: セラロックのみの見直しの失敗 « Physical Computingに挑戦!

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください