[an error occurred while processing this directive]
|
/*частота таймера 0,Гц*/
#define t0_frq 2000ul
//переменные для калибровки
uint16_t tmr_cpu_frq_cal,time_cpu_frq_cal;
/*перерив. таймера 0*/
ISR(TIMER0_OVF_vect)
{................
//увеличить счетчик циклов таймера 0
tmr_cpu_frq_cal++;
................
}
/*1 секундное перериван таймера 2*/
ISR(TIMER2_OVF_vect)
{
//автокалибровка внутр. генератора по часовому генератору
time_cpu_frq_cal=tmr_cpu_frq_cal; //запомнить насчитанное значение
tmr_cpu_frq_cal=0; //обнулить счетчик
//сравнить с нужными значениями и подстроить OSCCAL
if ((time_cpu_frq_cal>(t0_frq+5))&&(OSCCAL>0)) OSCCAL--;
if ((time_cpu_frq_cal<(t0_frq-5))&&(OSCCAL<0xff)) OSCCAL++;
}