В общем синхронный детектор, как уже говорили лучше делать в аналоге ну или на плисине, так как там прощще сделать DDS и считать все в квадратурах на DSP или контролллерах такие вещщи обычно не делают, из-за неравномерности вызова перрываний, на них обычно делают постобработку. На аналоге видел где то в инте реализацию металлодетектора на AD630, на ней был собран сам синхродетектор. А вообще использовать BF для данной задачи немного расточительно, если конечно я правильно понял задачу. Дешевле сделать на АВР + аналоговый детектор. Ну а если совсем плохо, и только в софте под BF, могу только на пальцах объяснить. Меандр заводите на прерывание, а лучше его событие (переход через 0-1, 1-0). По перыванию начинаете делаеть накопление данных с АЦП до следующего прерывания со знаком в соответсвие значения меандра: 0 -;1 + или наоборот, получая накопление каждой полуволны, считаете амплитуду и нормируете ее. Возможно вам придётся делать небольшие задержки для компенсации фазовых сдвигов цепей, это практически нужно будет выяснить по максимуму амплитуды, тут можно сделать ПИ-регулятор, который сам подстраивает задержку.
|