возможен и другой подход, входной сигнал подать на выводы внешнего прерывания, а как выходы использовать выводы OC1A и OCB1. А алгоритм такой:
1. Запустить по внешнему (по обеим фронтам, напр. нараст) прерыванию TMR1 (16-раз), по следующему внеш. прерыванию (напр. спадающему) считать значение TCNT1, умножить на требуемый коэффициент (FMULL) и поместить в ОСR1A (OCR1B) (напомню, что состояние этих выходов изменяется при каждом совпадении), на это пойдет десяток тактов МК, что вполне приемлемо (при частоте 4МГц и максимальной входной частоте 1кГц, 10 тактов составляют 10/4000 = 0.25% процентов, что вполне приемлемо (мне кажется что это можно учесть).
Если найду время отпишусь поконкретней, то бишь ассемблером
![Улыбка](images/smilies/icon_smile.gif)
. ИМХО самый лучший вариант.