По всей видимости у меня ошибка в коде, т.к. когда передаю в TXFIFO 16 байт(16 байт данных и 1 байт - длинна сообщения) и менее - передача по STX не идёт (GDO0 не изменяется(IOCFG0=0x06)) и в этом случае приёмник ловит несущую уже на 40см от первой. Но если в TXFIFO передаю 17 байт и более - передача как-будто бы идёт(GDO0 сначала 1 потом 0), но в этом случае приёмник ловит несущую только вплотную с передатчиком, синхрослово не принимается.
Вот кусок кода относящегося к передаче на Pascal'е:
Код
strob(SIDLE); //Переходим в IDLE
strob(SFTX); //Очищаем TXFIFO
strob(TXFIFO_B); //Комманда записи в TXFIFO burst
strob(17); //длинна пакета вместе с байтом длинны
strob(0); //адрес
for i:=0 to 15 do strob(reg_var[i]);//данные
strob(STX); //отправляем
While gdO0<>1 do nop;
While gdO0<>0 do nop;
Посмотрите пожалуйста, может Я делаю что-то не в соответствии со своими Регистрами(они выше).
Сейчас проверил,
Пытаемся отправить 17 и более байт:
если после загрузки данных в TXFIFO подать TXBYTE - в ответ 32. Если TXBYTE подать после STX, в ответ 32.
Пытаемся отправить 16 и менее байт:
если после загрузки данных в TXFIFO подать TXBYTE - в ответ 32. Если TXBYTE подать после STX, в ответ 0.
Самое интересно, что на TXFIFO выделено 33 байта, т.е. 16 и 17 - это середина.
Сообщение отредактировал Stein21 - Apr 22 2011, 16:19