Цитата(telix @ Jan 28 2013, 21:43)

Зачем Вам АЦП. Не важно по какому фронту Вы измеряете частоту, заваленному или крутому. Число периодов в единицу времени будет одно и то же.
И неточность тут может быть либо потому что Ваш процессор не имеет кварца на часах, либо частота входного сигнала "гуляет".
Заваленный фронт в Вашем случае будет влиять на гистерезис компаратора и давать ложные срабатывания. Если все дело в этом, так настройте на срабатывание по заднему фронту и все.
Кроме того ложные срабатывания можно отсекать программно, сделав короткий замер и получив примерную величину периода, затем использовать эту цифру как исходные данные для замера частоты.
Если очень хочется использовать АЦП, то тут все тоже самое только математики больше. Задаете порог срабатывания "вверх" и "вниз".
Скажем порог "вверх" 2.2V, а порог "вниз" 1.0V.
Далее при замере запускаете таймер счетчик, который будет отсчитывать "тики" между отсчетами. Ну и все.
Измеряем входной сигнал. Ждем когда он станет больше порога 2.2V , счетчик тиков запомнили, и установили флаг, далее чтоб он там ни делал ждем когда пересечет порог 1.0V, флаг сбросили, теперь ждем когда опять пересечет порог 2.2V и станет больше. Пересек. Запомнили второе значение счетчика тиков. Вычислили разницу. Прибавилиж в накопительную сумму. Нарастили счетчик периодов на 1. Дальше все повторяется некоторое время. Остановились. Вытаскиваем накопленную сумму и счетчик числа периодов. Делим сумму на число периодов получаем длительность периода в тиках с высокой точностью. Фсе.
Все решилось, бились данные при передачи из АЦП в DMA. Сейчас работает с погрешностью 3 Гц. Для моих задач хватает.
За совет спасибо!