vgo1 0 5 июня, 2012 Опубликовано 5 июня, 2012 · Жалоба добрый вечер уважаемые коллеги по паяльнику. помогите разобратса с AT90USB162 если можете. после того как сделал atach и получил usb reset пришел SETUP с требованием device descriptor-а. послал это, опять получл usb reset а после новый SETUP SET_ADDRESS. прочитал адрес и как в описании указано, ответил посылкой ZLP. это, как я понял, делается обнулением TXINI. после этого опять получл usb reset и обмен быстро прервался. подскажите что делая не так. ___________________________________________.doc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 6 5 июня, 2012 Опубликовано 5 июня, 2012 · Жалоба Что сделал не так - послал неправильный с точки зрения PC дескриптор или не послал вообще. Дальше все по прописи - три попытки и устройство отключается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 5 июня, 2012 Опубликовано 5 июня, 2012 · Жалоба помогите разобратса с AT90USB162 если можете Установите BusHound и посмотрите, что вы реально отсылаете в машину ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vgo1 0 6 июня, 2012 Опубликовано 6 июня, 2012 · Жалоба Установите BusHound и посмотрите, что вы реально отсылаете в машину ... спосибо, буду работать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vgo1 0 7 июня, 2012 Опубликовано 7 июня, 2012 · Жалоба скачал демо версию bus hound, загрузил в МК бутлоадер, запустил и посмотрел на захваченные данные. там четко видны пакеты GET_DESCRIPTOR. потом загрузил и запустил свою программу. GET_DESCRIPTOR-ов не видно, но я их получаю и расшифровываю. почему bus hound не показывает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vgo1 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба Установите BusHound и посмотрите, что вы реально отсылаете в машину ... скачал демо версию bus hound, загрузил в МК бутлоадер, запустил и посмотрел на захваченные данные. там четко видны пакеты GET_DESCRIPTOR. потом загрузил и запустил свою программу. GET_DESCRIPTOR-ов не видно, но я их получаю и расшифровываю. почему bus hound не показывает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vgo1 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба Что сделал не так - послал неправильный с точки зрения PC дескриптор или не послал вообще. Дальше все по прописи - три попытки и устройство отключается. А разве PC пошлет устроойству SET_ADDRESS если не получил device descriptor? Я полученные SETUP пакеты вывожу на LCD и вроде все начинается правильно: 1 подключаюсь (atach) 2 получаю USB reset 3 получаю setup GET_DESCRIPTOR( 80 06 00 01 00 00 40 00 ) 4 посылаю descriptor стиранием TXINI( 18 байт, из которых насколько я знаю, на этот раз PC интересуют первые 8) 5 получаю USB reset 6 получаю setup SET_ADDRESS ( 00 05 01 00 00 00 00 00 или 00 05 02 00 00 00 00 00 если до подключения моего устройства что-то уже было подключено) 7 отвечаю ZLP (стираю TXINI) Отсюда все происходит не так как я ожидаю, вернее ничего не происходит, должен опять приходить setup GET_DESCRIPTOR, а его нет, получаю reset и все остонавливается. Пробовал послать несколько ZLP, не помогло. Где искать ошибку? Кстати device descriptor я скопировал из какого-то ATMEL-овского устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба Где искать ошибку? Насколько я помню, есть какая-то тонкость в обработке Set_Address. Кажется, следует установить адрес не сразу же после получения запроса Set_Address, а после того, как завершится статусная фаза этого запроса ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vgo1 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба Насколько я помню, есть какая-то тонкость в обработке Set_Address. Кажется, следует установить адрес не сразу же после получения запроса Set_Address, а после того, как завершится статусная фаза этого запроса ... Вам бы золотой паяльник подарить, но не имею. Так что просто огромное спосибо, моя программа пошла дальше. Вы совершенно правы, адрес надо активировать после статусной фазы, но я не знал когда эта фаза кончается и активировал сразу после отправки ZLP. Сейчас дожидаю когда TXINI снова станет единицей, после активирую. Уже идут новые setup-ы с требованием device descriptor, interface descriptor… Надеюсь несколько дней никого не побеспокою, пока новые вопросы не накопятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 6 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба Вам бы золотой паяльник подарить, но не имею. Так что просто огромное спосибо, моя программа пошла дальше. Вы совершенно правы, адрес надо активировать после статусной фазы, но я не знал когда эта фаза кончается и активировал сразу после отправки ZLP. Сейчас дожидаю когда TXINI снова станет единицей, после активирую. Уже идут новые setup-ы с требованием device descriptor, interface descriptor… Надеюсь несколько дней никого не побеспокою, пока новые вопросы не накопятся. Рад был помочь. Успехов :) Кстати, в даташитах на те МК, что мне попадались, указанная мной особенность всегда особо оговаривалась. Видимо, на всякий случай ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Wonder 0 18 марта, 2013 Опубликовано 18 марта, 2013 · Жалоба Люди добрые - Помогите!!!! Ужо с месяц мозг выношу с аналогичной проблемой, только шагом дальше. Ситуация следующая: 1 подключаюсь (atach) 2 получаю USB reset 3 получаю setup GET_DESCRIPTOR( 80 06 00 01 00 00 40 00 ) 4 посылаю descriptor стиранием TXINI( 18 байт, из которых насколько я знаю, на этот раз PC интересуют первые 8) 5 получаю USB reset 6 получаю setup SET_ADDRESS ( 00 05 01 00 00 00 00 00 или 00 05 02 00 00 00 00 00 если до подключения моего устройства что-то уже было подключено) 7 получаю setup GET_DESCRIPTOR( 80 06 00 01 00 00 12 00 ) 8 посылаю descriptor стиранием TXINI и вот после этого все ничинается заного со 2го пункта. вот сам дескриптор 0x12,0x01,0x00,0x02,0x03,0x00,0x01,0x40,0xEB,0x03,0xF9,0x2F,0x01,0x00,0x01,0x02, 0x03,0x01 пробовал проанализировать получаемые хостом данные через BusHound. Но он не показывает запросы на этом этапе. Ужо незнаю куда копать :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
геннадий75 1 18 марта, 2013 Опубликовано 18 марта, 2013 · Жалоба В дескрипторе задан размер нулевой точки 64 байта.Поэтому на запрос setup GET_DESCRIPTOR( 80 06 00 01 00 00 12 00 )data0 отправляй сразу 18 байт дескриптора data1 и жди следующий запрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Wonder 0 18 марта, 2013 Опубликовано 18 марта, 2013 (изменено) · Жалоба В дескрипторе задан размер нулевой точки 64 байта.Поэтому на запрос setup GET_DESCRIPTOR( 80 06 00 01 00 00 12 00 )data0 отправляй сразу 18 байт дескриптора data1 и жди следующий запрос. Так и делаю. Но только вместо следующего запроса приходит сборс и далее все по кругу. Проясните пожалуйста ситуацию на счет data0/data1. Есдинственное где я их нашел, это регистр UESTA0X. Но я так понял, там он устанавливается/сбрасывается аппаратно. Изменено 18 марта, 2013 пользователем Alex_Wonder Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Wonder 0 19 марта, 2013 Опубликовано 19 марта, 2013 (изменено) · Жалоба В общем разобралсо. Суть проблемы была в том, что контроллер после получения, от хоста, командв "USB Reset" сбрасывал EP0 по дефолту, но при этом оставлял ее активной. А по дефолту - это все тож самое, только размер FIFO = 8 байт. После этого, хост, просил дескриптор устройства (18 байт), которые есессно не влазили в буфер и хосту отправлялся какой-то бред. После того как прицепил к "USB Reset" заного инициализацию ЕР0 - все заработало. Изменено 19 марта, 2013 пользователем Alex_Wonder Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться