Цитата(Палыч @ Jul 24 2009, 11:08)

Ну, Вы и закрутили с режимом таймера... Поскольку Вы используете mode 12 (наверное для сброса в ноль счетчика при захвате), то счетчик будет считать до значения ICR1. Значение ICR1 нужно выставлять при инициализации (по сбросу там будет 0). Но, как только произайдет захват, то значение ICR1 изменится! Имхо, с таким режимом можно сойти с ума.
Не лучше ли поставить счетчик в mode 0, включить прерывание по Input Capture и по переполнению и вычислять интервалы по двум значениям (предыдущему и текущему) ICR1 и числу переполнений счетчика между ними? Я бы так и делал.
Считать долго нежелательно, хотел как проще, при переполнении таймера игнорировать следующий захват,
а если при захвате ICR считывать и записывать туда значение ТOP таймера (65536), таким образом получится, что таймер сбрасывается и начинает считать сначала до 65536 ,
при этом погрешность вычисления уменьшается учитывая что при выводе информации на индикатор прерывания запрещаются, а вероятность что счеттчик дойдет до предыдущего ICR значения в это время когда прерывания запрещены невозможна