Несущая
Приемник ловит изменение несущей, которую генерирует передатчик. А если не будет передатчика, что будет ловить приемник? По идее не должен ловить ничего, а что на практике? А на практике дикий срач!!! Натурально белый шум по всему диапазону от 0 до 255. Фигасе бага, да? Но ладно, хрен с этим белым шумом, его, в конце концов, можно фильтровать, отслеживать в нем наличие чего либо разумного и лишь после начинать прием.
Ждущий режим
У передатчика, к моему, а также ряда внимательных читателей, удивлению нет входа Enable. У приемника то есть. Редкостный бред, особенно ввиду того, что спустя 70mS простоя на линии DATA передатчик впадает в спячку и правильно, отрубает несущую на выходе приемника начинается в этот момент жуткий срач. Так что либо шли данные непрерывным потоком, либо перед каждой посылкой шли идентификационный пакет. А еще не забыв предупредить приемник о том, что передача закончена и дальше ловить нечего.
Совместная работа
Тут все просто, два передатчика одновременно работать не могут. От слова совсем. Либо по отдельности, либо никак. Это было ожидаемо и это надо учитывать.
Баги при передаче
Но что меня больше всего добило, так это баги. Если с первые три пункта можно учитывать и обрабатывать программно без лишних заморочек, то со последним уже все гораздо веселей.
И тут я опять почесал репу. Как же так? Ведь пила (байты от 0 до 255) передается на ура, без помех и искажений. Осмысленный кусок текста, передаваемый по UART, тоже приходит отлично, без опечаток вообще, словно по проводу. А десять одинаковых байт превращаются во что угодно. Такое ощущение, словно несущая восстанавливается абы как и настраивается уже по ходу передачи символов. Послал в UART текстовое послание, и точно первые 3 символа превратились в кашу, а остальные идут молодцом. Гхм. Ладно, перед нашей посылкой делаю отправку небольшого слова PREVED, а потом 10 единичек. Гляжу в терминал PREVED??? Ага, ЩАЗ! МЕДВЕД! На выходе явно какое то слово, но оно, словно сдвинуто по таблице символов на какую то константу. Причем в тех же 30% передача идет нормально. Гхм. Засада какая. Выходит отправляешь один и тот же символ не работает, посылаешь слово не работает. Ладно бы ваще не работало, а почему когда гонишь абзац текста, то месит только три первых символа, а остальное идет нормально? Мистика да и только.
Решил попробовать сделать свою несущую, чтобы передатчик не замолкал ни на миг стал по прерыванию от UART слать в канал символ, а как полезная передача, то отрубаю прерывания и шлю вручную. Гхм. Символ то шлется, вот только на выходе то он, то какой то другой символ. Опять не айс. Тут, думаю, раз уж ты, зараза такая, не можешь отстроить канал на одном символе, пошлю ка я тебе пилу в качестве несущей. Послал заработало все без ошибок. В Idle режиме у нас тупо гонится пила, а как надо передать данные пила без проблем прерывается и пакет данных уходит бит в бит. Тока не нравится мне, что у меня под пила постоянно гонится на детектирование пакета нужно дополнительные телодвижения совершать и я стал экспериментировать дальше. Логика и шестое чувство, расположенное в пятой точке, подсказывало мне, что тут дело в каком то хитром байте, на котором канал встает нормально и дальше работает без проблем. Стал проверять какой же символ лучше всего инициализирует работу канала.
Нашел если отправить 255, то канал поднимается сразу же и шлет дальше данные без ошибок вообще.
З.Ы.
Я их еще на дальность не тестировал. Ждите, скоро будет.
RS232UARTИнтерфейсМодульОтладкаРадиопередача
Оцените статью!