Sevenfly 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Есть устройство на AT89C5131, программа на Дельфи и драйвер. Возникает следующая проблема: пишу в Дельфи в 4 конечную точку блоки по 32 байта, все 32 байта код #49. В устройстве же считывается иногда что-то другое (из 32 байт 30 правильные, в 2х ошибка). Смотрю в DebugView, что приходит в буфере запроса на запись - всё четко. Тип переда - Interrupt, максимальный размер пакета - 32 байта (пробовал 64, всё тоже самое). Но стоит только вместо 4 начать писать во вторую, то всё приходит нормально. В чем может быть проблема? Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sevenfly 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Есть мысль, что что-то неправильно делаю при считывании из 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=Usb_read_byte(); if(SndBuf!=49) Bytewr(0xC0,SndBuf); } 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, тоже самое Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться