Timer'ı kusursuz hesaplamak

Başlatan erdinch, 20 Ağustos 2007, 21:02:30

erdinch

arkadaşlar öncelikle ilgilendiğiniz için teşekkürler. benim timer1 alt rutinim şu şekilde

#int_TIMER1
void TIMER1_isr()
{
if(msaniye<100){
msaniye++;}
else{
saniye++;
msaniye=0;
if(a==0)
{output_low(led);
a=1;
}
else{
output_high(led);
a=0;
}
if(saniye==59){
saniye=0;
dakika++;}
if(dakika==60){
dakika=0;
saat++;
}
if(saat==24){
saat=0;
}
tarih_kontrol();
}

set_timer1(15246);

}


Ziya hocamin dedigi gibi normalde geri kalması gerekirken ileri gitmesi osilatörden kaynaklanan bir sorun heralde.Ben de belirli ölçümler alarak timer1 değerini yukarıdaki gibi hesapladım.Bunda da küçük sapmalar var ama iyileştirilebilir.

Olay sanırım donanımsal bir sorun..