[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено dimapp 24 сентября 2002 г. 10:52
В ответ на: Так задавай. отправлено Visitor 24 сентября 2002 г. 09:58

Меня интересует сам алгоритм. Я сделал на кварце 2.4576 МГц. С прерываниями. Частота прерываний для скорости 1200 bps получается ровно 600,00 Гц. В прерываниях я опрашиваю вход и ищу сначала синхрослово следующим образом: принимаю байт, сравниваю принятый байт с первым байтом синхрослова. Если совпало, принимаю второй байт. Если не совпало, принимаю следующий бит, RLF и опять сравниваю (т.е. щупаю байт, изменяя его по одному биту). После того, как поймал синхрослово, начинаю отсчёт фреймов ну и ловлю всё остальное. Проблема в следующем: при приёме длинных сообщений (15 и более блоков подряд) после приёма 6 (иногда более, иногда менее) блоков, следующее синхрослово не принимается, т.е. блок пропускается, и через один или два блока приём опять начинается нормально. Чувствую, что дело здесь в синхронизации длительности импульсов протокола и моих прерываний (опроса входа). Хотя записывал протокол и импульсы прерываний на компьютер, так вот прерывания происходят ровненько в середине каждого бита. В чём тут проблема? Как лучше реализовать эту синхронизацию ? Каким образом народ синхронизируется, когда использует кварц вообще не кратный частотам 256, 600 и 1200 Гц ? Заранее спасибо !

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru