galjoen 0 4 июля, 2008 Опубликовано 4 июля, 2008 · Жалоба при изменении адреса допустим на 0x03 вообще ничего не происходит. Так у вас вообще OUT EP с адресом 3 вообще обслуживается? Хотя-бы NAK отвечает? Если нет, то после 3 (или 5?) безответных запросов ваш девайс сбросят. А если NAKи слать, то через 5 секунд. Лучше вообще не объявляйте эту EP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 4 июля, 2008 Опубликовано 4 июля, 2008 · Жалоба Так у вас вообще OUT EP с адресом 3 вообще обслуживается? Хотя-бы NAK отвечает? Если нет, то после 3 (или 5?) безответных запросов ваш девайс сбросят. А если NAKи слать, то через 5 секунд. Лучше вообще не объявляйте эту EP. так чего делать???... я уже в тупике... я даже не знаю что предположить... вплоть до того что сама микросхема того... хотя на запросы отвечает, и правильно отвечает... заметил вот какую штуку, если закрыть потом открыть устройство, то передается один пакет который я записал в фифо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 4 июля, 2008 Опубликовано 4 июля, 2008 · Жалоба так чего делать???... я уже в тупике... я даже не знаю что предположить... вплоть до того что сама микросхема того... хотя на запросы отвечает, и правильно отвечает... заметил вот какую штуку, если закрыть потом открыть устройство, то передается один пакет который я записал в фифо. Дескрипторы-то у вас передаются? Устройство ведь виндоусом пределяется? Оно в списке устройств USB есть? Если есть, то: 1. Убрать дескриптор 2й EP. 2. Кол-во EP в дескрипторе интерфейса =1. 3. Общая длина в конфигурации на 7 меньше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 4 июля, 2008 Опубликовано 4 июля, 2008 · Жалоба Дескрипторы-то у вас передаются? Устройство ведь виндоусом пределяется? Оно в списке устройств USB есть? ну дык в том то и дело что девайсина определилась... Если есть, то: 1. Убрать дескриптор 2й EP. 2. Кол-во EP в дескрипторе интерфейса =1. 3. Общая длина в конфигурации на 7 меньше. т.е. попробовать использвать другую ЕР??... попробую сегодня вечером... мысль... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 4 июля, 2008 Опубликовано 4 июля, 2008 · Жалоба ну дык в том то и дело что девайсина определилась... т.е. попробовать использвать другую ЕР??... попробую сегодня вечером... мысль... Не другую, а ОДНУ. У вас сейчас 2 EP, с одинаковым адресом. Одна передающая (IN) её вы пытаетесь обслуживать. Другая принимающая (OUT). Вы её вообще обслуживаете??? Судя по логу - нет. Если нет, то она (необслуживаемая, но описанная EP) и является причиной сброса девайса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 5 июля, 2008 Опубликовано 5 июля, 2008 · Жалоба Не другую, а ОДНУ. У вас сейчас 2 EP, с одинаковым адресом. Одна передающая (IN) её вы пытаетесь обслуживать. Другая принимающая (OUT). Вы её вообще обслуживаете??? Судя по логу - нет. Если нет, то она (необслуживаемая, но описанная EP) и является причиной сброса девайса. вот теперь я точно ничего не понимаю... почему одинаковые адреса?? в книге Агурова написано код адреса bEndpointAddress сожержит следующие биты: [7] направление передачи (игнорируется для каналов сообщений) 0 - OUT (от хоста) 1 - IN (к хосту) насколько я понимаю лог, то OUT это запрос направленный из хоста в девайс, в котором и есть запрос на передачу данных. из девайса в хост (IN). а вот если устройство закрыть, открыть, установить конфигурацию, то передаётся ещё один пакет... при закрытии выаолняется запрос SetConfig: ReqUSB->wValue = 0; при установке конфигурации ReqUSB->wValue = 0х01 void SetConfig(void) { IntFlag &= ~(1 << ISP_INT_EP0RX); //USB_Int_Flag.BITS.EP0RX = 0; if(ReqUSB->wValue == 0) { Device_Config_Value = 0; ep0in_ack(); wait_ep0tx(); } //else if (ReqUSB->wValue == 0x0100) else if (ReqUSB->wValue == 0x01) { Device_Config_Value = (unsigned char)(ReqUSB->wValue); ep0in_ack(); wait_ep0tx(); } else { //WriteByteToISP(ISP_REG_ENDP_INDX, 1); WriteByteToISP(ISP_REG_ENDP_INDX, ISP_ENDP_EP0TX); CntrlFun |= (1 << ISP_CNTRL_STALL); WriteByteToISP(ISP_REG_CNTRL_FUN, CntrlFun); while (!(IntFlag & (1 << ISP_INT_EP0SET))) { IntFlag |= ReadByteFromISP(ISP_REG_INT); WriteByteToISP(ISP_REG_INT, IntFlag); if ((IntFlag & (1 << ISP_INT_SUSP)) || (IntFlag & (1 << ISP_INT_RESET))) return; } IntFlag &= ~(1 << ISP_INT_EP0TX); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 5 июля, 2008 Опубликовано 5 июля, 2008 · Жалоба прилагаю лог... енумерации и пр... logMyUSB_dev.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 6 июля, 2008 Опубликовано 6 июля, 2008 · Жалоба стала появляться ошибка pipe82: Error code 0xE0000011: HC Error: XACT Error Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 7 июля, 2008 Опубликовано 7 июля, 2008 (изменено) · Жалоба стала появляться ошибка с одной конечной точкой такая фигня... и ещё не с первого раза конфигурируется... при записи в регистр тест мод вот этого бита "FORCEFS" который "A logic 1 forces the physical layer to full-speed mode only and disables the chirp detection logic." Изменено 7 июля, 2008 пользователем Mozart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 7 июля, 2008 Опубликовано 7 июля, 2008 · Жалоба с одной конечной точкой такая фигня... и ещё не с первого раза конфигурируется... при записи в регистр тест мод вот этого бита "FORCEFS" который "A logic 1 forces the physical layer to full-speed mode only and disables the chirp detection logic." вообще устройство не определяется... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 7 июля, 2008 Опубликовано 7 июля, 2008 · Жалоба вот теперь я точно ничего не понимаю... почему одинаковые адреса?? в книге Агурова написано 1. В книге Агурова под термином "канал сообщений", вероятно имелся в виду контрольный канал (EP 0). Но там вообще не нужно описывать EP, указывается только размер пакета (в дескрипторе DEVICE). 2. Вы пытаетесь пользоваться USB не разобравшись в том, что собственно там происходит. В надежде, что всё сразу заработает и вам не понадобится разбираться с теорией, вы потеряли столько времени, сколько вам бы хватило для изучения этой самой теории. 5. Аппноуты полезны только в том случае, если вы уже обладаете знанием теории. 6. Вот прикрепляю главу 8 (перевод не очень) сначала разберитесь с ней. CH08_R.DOC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 7 июля, 2008 Опубликовано 7 июля, 2008 · Жалоба 1. В книге Агурова под термином "канал сообщений", вероятно имелся в виду контрольный канал (EP 0). Но там вообще не нужно описывать EP, указывается только размер пакета (в дескрипторе DEVICE). 2. Вы пытаетесь пользоваться USB не разобравшись в том, что собственно там происходит. В надежде, что всё сразу заработает и вам не понадобится разбираться с теорией, вы потеряли столько времени, сколько вам бы хватило для изучения этой самой теории. 5. Аппноуты полезны только в том случае, если вы уже обладаете знанием теории. 6. Вот прикрепляю главу 8 (перевод не очень) сначала разберитесь с ней. я её перечитываю периодически... спасибо за чаптер 8... но как мне кажется ошибка не в том, что я делаю что-то неправильно, а просто где-то накосячил... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 8 июля, 2008 Опубликовано 8 июля, 2008 · Жалоба ну насколько я понимаю весь этот процес... хост шлёт мне IN пакет, по мануалу я заполняю буфер и шлю "ОК" (хз что они имеют ввиду под "ОК"), потом хост мне шлёт АСК в случае успешного принятия этих данных, или вообще ничего не шлёт, что свидетельствует о том что хост данные не принял. также по мануалу, данные автоматически передаются когда счётчик ФИФО достигает Max Packe Size или до тех пор пока я принудительно их не отправлю... я обращался в nxp на предмет что такое "ОК" и как мне проверить приход сигнала АСК, и нужно ли его проверять... они мне ничего не сказали, что всё мол по стандарту, а потом отослали в ближайшую их службу... идиоты или я дурак.... если честно то я до сих не понимаю что мне делать... точнее как может в программе надо что-то установить?? люди... не дайте пропасть моей грешной душе... может быть я какой-нибудь запрос не верно обрабатываю?... может suspend resume... вот мой кусок кода unsigned int write_endpoint(unsigned char endp, unsigned int lenB, unsigned char *buf) { unsigned int data; WriteByteToISP(ISP_REG_ENDP_INDX, endp); WriteByteToISP(ISP_REG_BUFF_LENGTH, lenB); SetAddr(ISP_REG_DATA); while (lenB) { data = *buf++; data |= *buf++ << 8; WriteData(data); lenB -= 2; } return lenB; } з.ы. удалось только сделать приём данных... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mozart 0 10 июля, 2008 Опубликовано 10 июля, 2008 · Жалоба может быть всё дело в скорости записи... у меня 2 байта пишутся за 500нС... 64 байта следовательно пишутся за 16мкС... я имею ввиду буфер на микросхеме... хотя с другой стороны почти с такой же скоростью 64 байта и читаются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться