Господа помогите. Мозг уже плавится.
Схема: Xmega <-> FT232RL <-> PS.
Нужно по запросу от PS (путём посылки байта 0x40) получить от иксмеги 32MB данных.
Прогу на PS пишу на Delphi.
Передавать решил пачками по 512 байт (т.е. 65536 транзакций).
Скорость сом порта 2Mb/s.
Всё вроде работает, но есть один нюанс (напишу позже).
Вот так открываю порт:
Код
var h:thandle;
...
h:=fileopen('COM7',fmOpenReadWrite);
...
Вот процедура вычитки сом порта (максимально упростил для наглядности):
Код
procedure BUF_read;
var i,k:dword;B:byte;
BUF:array [0..511] of byte;
begin
B:=$40;
for k:=0 to $FFFF do begin
_hwrite(h,@B,1);
for i:=0 to 511 do _hread(h,@buf0[i],1);
end;
end;
RXD и TXD наблюдаю осциллографом.
Сразу после передачи писишкой байта 0x40 иксмега передаёт в ответ 512 байт затем
пауза примерно 17ms и цикл повторяется.
Откуда эта пауза берётся?
Как от неё избавиться?