Добрый день господа!
Помогите найти ошибку в исходном коде.
Два таймера вместе не хотят работать - только 1 из двух. Причем тот - который последний инициируешь. по отдельности работают. ATtiny26
// иниацилизируем счетчик Timer/Counter1
TIMSK = (1<<TOIE1); // разрешаем прерыв от 8-разр счётчика
TCCR1B = (1 << CS10)|(0 << CS11)|(0 << CS12)|(1 << CS13); //коэф деления 1/1024
TCNT1 = 0x00; // начало отсчета )
// иниацилизируем счетчик Timer/Counter0
TIMSK = (1<<TOIE0); // разрешаем прерыв от 8-разр счётчика
TCCR0 = (1 << CS00)|(0 << CS01)|(1 << CS02); //коэф деления 1/1024
TCNT0 = 0x00;
sei (); // разрешаем прерыв
// ( Прерывание ) счетчик 0го таймера
//------------------------------------------------------------------------------
ISR(SIG_OVERFLOW0) {
perv++;
TCNT0 = 0; // обновить число начал счета
TIFR = (1<<TOV0);
}
// ( Прерывание ) счетчик 1го таймера
//------------------------------------------------------------------------------
ISR(SIG_OVERFLOW1) {
vtor++;
TCNT1 = 0; // обновить число начал счета
TIFR = (1<<TOV1);
}
И далее в общем наброски программы:
unsigned char walk(void) {
if (perv==30) {
perv=0; //сбрасываем в нач счета 0й таймер
Led_inv_R;
}
if (vtor==300) {
vtor=0; //сбрасываем в нач счета 1й таймер
Led_inv_G;
}
return (0);
}
Контролирую это двумя светодиодами. Можно было и все сделать на одном таймере, но хотелось бы разобраться с двумя таймерами.
Спасибо!