Цитата(Огурцов @ Jan 28 2015, 14:57)

только скорее всего старты/стопы нужно тоже учитывать
Старт и один стоп взаимно балансируются, так что проблем нет. Надо только обеспечить отсутствие пауз между байтами, что легко выполнить.
Цитата(Огурцов @ Jan 28 2015, 14:57)

обнаружилась одна неудобная неожиданность
вход разрешения передатчика необходимо синхронизировать со входом данных
иначе приёмник, через раз, защелкивается не в том состоянии
пока не понятно, как этого избежать, чтобы без дополнительной логики
Чтобы не париться с моментом включения, достаточно перед началом пакета посылать преамбулу с кодом 0х55. Тогда алгоритм передачи пакета такой:
- начинаем гнать байты преамбулы 0х55
- включаем передатчик
- ждем пока хотя бы пара-тройка 0х55 уйдет на выxод и сбалансирует трансформатор(ы) (понятное дело, что проще приклеить несколько байтов преамбулы 0х55 к началу передаваемого буфера, чем ждать)
- передаем два байта 0хF0; первый из них, возможно, будет принят неправильно, зато он прочистит UART; второй байт 0xF0 будет принят правильно
- по приходу 0хF0 очищаем приемный буфер, затем принимаем все символы вплоть до символа "конец пакета", после чего проверяем и CRC т.д.
- если во время приема приходит символ, не соответствующий кодировке 6b8b, то очищаем буфер (пакет битый)
Поскольку при кодировании 6b8b число валидных символов больше чем 64, то для передачи данных в пакете символы 0x55, 0xF0 и "конец пакета" (который выбирается произвольно) - не используются.