Romikgy писал(а):что значит "вы бы определились с несущей"? с самой частотой? да это не важно, пусть будет 1 Гц.
Что значит неважно? Для 1 Гц. легко делать на прерывании. Будет определенное дрожание фазы (джиттер), но для последовательных программ по-другому невозможно. Определяйся с нужной точностью. Примерный алгоритм для 1 гц:
Настроить таймер на 1гц*2, настроить прерывание от этого таймера.
В прерывании от таймера:
Инвертировать или не трогать выход в соответствии с подготовленным флагом. Так надо делать, чтоб была минимальная задержка и дрожание фазы зависящее от ветки исполнения программы.
Сигнал поменяли, теперь можно спокойно готовить флаг для след. прерывания:
Если между битами данных есть изменение уровня, то выставляем флаг, иначе сброс.
Фсе
Цифровой выход фильтровать rc цепью.
И плохо не отвечать на вопросы, или считай себя "самым умным" и не спрашивай, или отвечай на наводящие вопросы.
Например, этот алгоритм идет лесом если частота модуляции не кратна удвоенной частоте несущей.