Зачем в передатчике 5)., когда передача уже всё? Виделись рекомендации просто один любой dummy byte передавать в конце, чтобы... что-то.
В приёмнике первый байт примется сразу после sync word 2D D4 *, а для следующих байтов получается что ли мой вариант в). ? Переключиться с заполнения буфера по sync word на заполнение по VDI (какому-то из возможных вариантов)? Или даже вообще на заполнение always? Тогда мысль вернулась опять к вопросу б). ... тупил. Не надо встроенный модуля буфер переинициализировать перед каждым байтом.
... как приёмник, ловя мусорные биты с воздуха, определяет начало следующего байта? С sync word понимаю (понимаю? да, понимаю), а в других случаях.
Про таймаут буду постараться не забыть, да.
* оно уже выбрано производителем
---
Итого приёмник:
1). прерывание по дёрганию модулем nIRQ, 2). читаем из модуля статус = сбрасываем флаг FFIT (можно что-нибудь поделать и с другими флагами), 3). читаем из модуля содержимое его встроенного буфера, которое ложим в наш программный буфер по указателю, 4). шлём модулю команды CE84, CE87 ~ переинициализируем его встроенный буфер модуль продолжает запихивать поступающие из воздуха новые биты в свой встроенный буфер, постепенно выталкивая ими и теряя старое содержимое буфера.
5). инкрементим указатель на наш программный буфер, 6). если получился указатель меньше, чем - это был ещё не конец пакета, выходим из прерывания.
7). сейчас шлём модулю команды CE84, CE87 ~ переинициализируем его встроенный буфер, модуль начинает ждать с воздуха следующего (или следующее?) sync word. 8). обнуляем указатель на наш программный буфер...
Сообщение отредактировал нечитатель - Apr 12 2011, 23:34
|