Подскажите пожалуста настроен таймер №1 в мега8 на прерывание по совпадению с регистром А должен срабатывать с частатой в 2 гц , в прерывании инкреминируеться одна переменная которая отвечает за подсчет секунд для часов немогу добиться точности часов.
Вот настройка таймеров:
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
TCCR0=0x04;
TCNT0=0xB2;
TCCR1A=0x00;
TCCR1B=0x00; //stop
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0xF4;
OCR1AL=0x24;
OCR1BH=0x00;
OCR1BL=0x00;
TCCR1B=0x03; //start
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x11;
если не останавливать таймер в прерывании и неуказывать что счет начать с нуля то как неменяеш цифры регистра OCR1AH такое ощющение что счет идет по кругу, а прерывание срабатывает как положено при совпадении с регистром OCR1AH тоб то немогу увеличивать или уменьшать длительность полусекунды.
После того как добавил в прерывание это таймера вот эти строчки
TCCR1B=0x00; //stop Т№1
TCNT1H=0x00; // записать начало отсчета таймера Т№1
TCNT1L=0x00; //
TCCR1B=0x03; //start Т№1
сразу наладилась точность часов но возникет вопрос мне на форуме говорили что этот таймер Т-1
sheva_s - если Вы будете использовать таймер №1 так, как я описал ранее (с использованием регистра OCR1A), то все у Вас будет в порядке!
Само время, которое будет отсчитывать Таймер №1, будет абсолютно точно (насколько это вообще возможно), без всяких задрежек и погрешностей, т. к. он работает НЕЗАВИСИМО ни от чего, в том числе независимо от обработки прерываний, которые он сам генерирует. Этот таймер всегда будет считать одни и те-же интервалы времени.
а так когда я его буду обнулять принудительно в прерывании то время у меня будет плавать так как таймер №0 у меня настроен для динамической индикации и при совпадении прерываний 0 и 1 таймера сначала обработаеться прерывание таймера №0, а только потом прерывание таймера №1 что в свою очередь повлечёт сбой точности хода часов .
Что посоветуете как быть ?
если что непонятно пишите может что не так описал.