Снова почитал я про USART, про кодировку ик команд(их оказывается очень много), мне в принципе понравился этот способ(точнее все, они весьма однообразны), как я понял суть в том что шифратор запускает импульс, который обозначает начало команды, затем дает приёмнику некоторое время, что бы запуститься, и начинает отправлять один бит за другим, при этом для того, чтобы различить 0 это или 1 используется длина импульса. Способ мне понравился потому, что синхронизация работы приёмника и передатчика очень проста.
Вообще, основная проблема для меня была в том, как правильно написать программу, как корректно её составить. Для определения длинны импульса используются таймеры и прерывания, конечно все здорово, но что-то мне показалось сложновато, нет все рано нужно будет разобраться, но для первого раза подошел бы способ по проще.
И тут я наткнулся на такую замечательную вещь, как сдвиговый регистр. Я сразу понял что можно его использовать. Немного подумав, я набросал алгоритм по которому будет работать шифратор и дешифратор:
Во-первых, шифратор, выполнен на базе микроконтроллера ATmega8, он опрашивает состояние всех кнопок и создает последовательность из 3-х битов(именно 3-х, так как с помощью них можно закодировать 8 различных команд), перед тем как запустить эти биты он формирует импульс, который подготавливает дешифратор к работе, происходит синхронизация его с шифратором.
Во-вторых, дешифратор, здесь немного сложнее. Состоит из микроконтроллера и сдвигового регистра, который подсоединен к микроконтроллеру. Микроконтроллер следит за появлением стартового бита, при его появлении, он запускает тактовую частоту, которая совпадает с частотой отправки битов, что бы регистр принимал их в правильном порядке. (извините, может быть фраза кривовата вышла, но как-то не смог я слов подобрать). После приёма всех 3-х битов, сдвиговый регистр( или микроконтроллер сам) сигнализируют об окончании передачи команды, микроконтроллер подает команду вывести значение регистра на какой либо драйвер, ждет некоторое время, и убирает его, обнуляет регистр и начинает ждать новую команду.
Фух, вроде всё. Посмотрите, может какие-то нюансы есть в этом способе, недостатки.
Заранее спасибо