Sevens
Oct 25 2006, 11:30
Есть устройство на AT89C5131, программа на Дельфи и драйвер.
Возникает следующая проблема: пишу в Дельфи в 4 конечную точку блоки по 32 байта, все 32 байта код #49. В устройстве же считывается иногда что-то другое (из 32 байт 30 правильные, в 2х ошибка).
Смотрю в DebugView, что приходит в буфере запроса на запись - всё четко.
Тип переда - Interrupt, максимальный размер пакета - 32 байта (пробовал 64, всё тоже самое).
Но стоит только вместо 4 начать писать во вторую, то всё приходит нормально. В чем может быть проблема?
Заранее спасибо!
Sevens
Oct 25 2006, 12:34
Есть мысль, что что-то неправильно делаю при считывании из 4й конечной точки, т.к. с 3ей конечной точкой тоже проблем никаких. Сейчас процидура считывания из 4й конечно точки выглядит так:
void usb_recieve(void)
{
unsigned char i,tmp;
Usb_select_ep(4);
br=Usb_get_nb_byte();
for(i=0;i<32;i++)
{
SndBuf[i]=Usb_read_byte();
if(SndBuf[i]!=49)
Bytewr(0xC0,SndBuf[i]);
}
if(data0==0)
{
Usb_clear_rx_bank0();
data0=1;
}
else
{
Usb_clear_rx_bank1();
data0=0;
}
}
Также пробовал вместо
if(data0==0)
{
Usb_clear_rx_bank0();
data0=1;
}
else
{
Usb_clear_rx_bank1();
data0=0;
}
просто обнулять оба бита rxbank1 и rxbank0, тоже самое