Есть идея реализовать прием данных через микрофонный вход телефона. Гораздо проще по ЮСБ, но мы не ищем легких путей =))
Интересует вот что:
Частота дискретизации входного сигнала = 44100гц.
Скорость передачи данных с микроконтроллера = 9600 бод/сек

На осциллограмме в VMLAB'е видно, что 1 пакет данных (10 бод) передается за 1мс. Длительность 1 бода = 100мкс.
В документации на atmega16 указано, что внутренний usart делает замеры (отсчеты) 16 раз за 1 пакет. Почему - не помню, но мне голова подсказывает, что надо делать 20 замеров, 2 раза за один бод, учитывая старт-бит и стоп-бит.
С другом собираемся поступить так:
Оцифрованный сигнал с микрофона будет записываться в буфер определенной длинны. Далее, будет алгоритм выборки из этого буфера.
Но, для более высокой точности необходимо "щупать" сигнал с частотой 20кГц. Не каждый УНЧ может похвастаться работой на такой частоте, а тем более микрофонный усилитель. То есть вряд ли получится каждый бод щупать по два раза.
Отсюда вопрос: а что если "щупать" всего один раз? То есть изначально устройства будут как-то синхронизироваться между собой, на приемнике будет высчитываться длительность импульса, длительность всего пакета, и исходя из расчетов будет корректироваться шаг выборки из буфера?
Какова вероятность приема с ошибкой? Какие есть алгоритмы исправления? И т.д.
Сообщение отредактировал Lost_Viking - Jan 20 2012, 16:56