PIC時計を調整してみる

PIC時計を調整するには、どこを調整するか?
割り込み関数内のカウンターを調整してみた。
最初の段階で遅れたので設定値を小さく(RELOADSに1を足さずにそのままに)してみた。時分表示だと時間がかかるので分秒表示にして確認。ちょっと早い。
半分を元の値で半分を小さくした値にしてみた。ちょっと遅れる。
と、調整していき、1時間で4〜5秒遅れるくらいまで調整できた。これで誤差は0.15%程度。これはセラロックの精度が0.5%なので、これ以上調整してもあまり意味が無いだろうからこれで止める。
次はタイマーのクロックにクオーツを使って精度を見てみたい。

調整したタイマー0の割り込み関数部分。

void interrupt timer0_proc(void)
{
	if(reload == 0){
		// effect a change on PORTB whenever our desired period is reached.
		// Note this timing will contain a margin of error.
		if (sec & 1) {
			reload = RELOADS;
		} else if (sec & 2) {
			reload = RELOADS;
		} else {
			reload = RELOADS + 1;
		}
		sec++;
		if (sec > 59) {
			sec = 0;
			min++;
			if (min > 59) {
				min = 0;
				hour++;
				if (hour > 23) {
					hour = 0;
				}
			}
		}
		RB0 = !RB0;
		RB1 = !RB1;
	}
	reload--;
	T0IF = 0;
}
カテゴリー: PIC タグ: , , , パーマリンク

コメントを残す

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

CAPTCHA