Цитата(=GM= @ May 3 2012, 16:04)

Ещё один вариант - преобразование Фурье обоих сигналов и вычисление фазы между двумя комлексными векторами. Вариант имеет преимущество в том, что не надо выравнивать амплитуды сигналов, ну и не нужна никакая периферия, достаточно голой атмеги.
Делал так, точность и помехоустойчивость рулит - т.е. можно работать с очень паршивым сигналом (до 3-6dB SNR), но есть одно но
- мега точно не потянет в real-time 1kHz с точностью 0.1 градус и 3-4 измерений в секунду (не потянет даже раз в секунду).
Если сигнал у автора чистый - я бы обратился к более простым методам - преобразование в меандр обеих сигналов с последующим умножением одного на второй (логическое "И"). Для результирующего сигнала рассчитать отношение времени состояния "1" к времени состояния "0" (собсно это отношение будет равно K*амплитуда фильтрованного сигнала). Зависимость будет обратно-пропорциональная от 50% до 0% -> пропорционально 0..Pi.
0% времени умноженный сигнал в "1" - Фаза равна Pi.
25% времени умноженный сигнал в "1" - Фаза равна Pi/2.
50% времени умноженный сигнал в "1" - Фаза равна 0.
Для идеального сигнала минимальная (наихудшая) точность будет определяться отношением частоты измеряемого сигнала к частоте дискретизации (частоте на которой будет производиться захват произведения двух меандров).