Цитата(chief_olimp @ Nov 7 2009, 18:41)

Ну и что в процедуре обработчика мешает всунуть TCNT3=0
Вот этого делать не надо. Интервал таймера будет "дрожжать", jitter появится когда будет несколько прерываний.
Цитата(Ph. Anatoliy @ Nov 7 2009, 17:52)

кусочек кода как на 128 меге настроить таймер 1 на срабатывание прерываения COMPA и COMPB при этом при срабатывании COMPB сбрасывать таймер счетчик в 0.
Если вас устроит сброс счетчика таймера в 0 при достижении COMPA вместо COMPB смотрите пример ниже:
Код
#include <avr/io.h>
#include <avr/interrupt.h>
SIGNAL (SIG_OUTPUT_COMPARE1A)
{
static char x = 0;
PORTA = x++;
}
SIGNAL (SIG_OUTPUT_COMPARE1B)
{
static char x = 0;
PORTB = x++;
}
static void Timer1Init(void)
{
OCR1A = 500;
OCR1B = 200;
TIMSK |= (1 << OCIE1A) | (1 << OCIE1B);
TCCR1B = (1 << CS10) | (1 << WGM12); // no prescaler + CTC1
}
void main(void)
{
Timer1Init();
sei();
for(;;);
}