реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> MEGA128 + USB на USBN9604, Комп не видит девайс
nagserg
сообщение Jul 27 2005, 13:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Решил изучить USB. Вот собрал USB на USBN9604 с сайта USB Masters, только вместо AT90S8515 поставил MEGA128, перевел программу в CodeVisionAVR, залил в МЕГУ, при подсоединении к компу, он (комп) даже не видит, что подключено новое устройство, в чем может быть проблема?
Go to the top of the page
 
+Quote Post
m16
сообщение Jul 27 2005, 14:18
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



попытался скачать шит на USBN9604 с указанного сервера - ошибка port80. так думаю что вам нужно качнуть драйвер у призводителя
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Jul 27 2005, 14:28
Сообщение #3


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



драйвер сдесь не причем, до него еще дело не дошло, или дошло но стоит уже какойцто кривой драйвер.


1) подключить девайс к компу в менеджере устройств посмотреть не появляется какое нибудь устройство.

2) скорее всего у вас что то в схеме не то, полярность проводов D+ D - не ту резистора подтягивающего и т.д.
Go to the top of the page
 
+Quote Post
nagserg
сообщение Jul 28 2005, 06:15
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Цитата(MALLOY2 @ Jul 27 2005, 17:28)
подключить девайс к компу в менеджере устройств посмотреть не появляется какое нибудь устройство.
*
При включении сейчас появляется в правом нижнем углу "USB Device Not Recognized". И в менеджере устройств появляется Unknown Device.
Go to the top of the page
 
+Quote Post
BVU
сообщение Jul 28 2005, 08:39
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Если Вы правильно организовали USB стек-протокол(структуры данных и функции ...) для USBN9604, то теперь действительно нужен драйвер для PC обслуживаюший Ваше HID устройство. Так же необходимо знать библиотечные функции этого драйвера(если они не стандартны) чтобы написать PC программу для связи с Вашей embedded системой.
P.S. Я так думаю что Вам необходима максимальная скорость передачи данных по USB? Поскольку Вы используете USBN9604... Но если такой критерий не лимитирует не проще было бы использовать стандартные преобразователи FT232B/MFT245BM, CP2101/CP2102 или хотя бы проект Igor Cesko на AT90S2313. Это было бы предельно просто и не возникло бы проблем с созданием USB интерфейса "с нуля"!


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
pulsar-17
сообщение Jul 28 2005, 20:11
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 32
Регистрация: 7-12-04
Из: Московская область
Пользователь №: 1 376



Цитата(nagserg @ Jul 28 2005, 09:15)
Цитата(MALLOY2 @ Jul 27 2005, 17:28)
подключить девайс к компу в менеджере устройств посмотреть не появляется какое нибудь устройство.
*
При включении сейчас появляется в правом нижнем углу "USB Device Not Recognized". И в менеджере устройств появляется Unknown Device.
*


Эти сообщения скорее всего говорят о том, что устройство подключено к порту, но не отвечает на запросы или отвечает криво(на этом не одну собаку скущал smile.gif). Как правило, это связано с неправильной инициализацией самой USBN, кривым описанием дескрипторов или софтом. На кривоту дескрипторов нарывался при переходе на другой компилер, он структуры с описанием config, interface и endpoint дескрипторов расположил не в заданном порядке, а наоборот. Итог те же сообщения винды.
Запрос конфигурации проходит в два этапа:
1) запрос собственно config дескриптора(в нем прописана помимо его собственного размена размер всей конфигурации в байтах складывающийся из: размер config_desc + размер interface_desc * количество интерфейсов + размер всех endpoint_desc для всех интерфейсов ).
2) запрос всей конфигурации. Он отличается от первого только тем, что в запросе от хоста передается размер всей конфигерации, а не размер только config_desc.
Дескрипторы должны передаваться строго иерархически:
config_desc
interface_desc_1
endpoint_desc_1_1
...
endpoint_desc_1_N
interface_desc_2
endpoint_desc_2_1
...
endpoint_desc_2_N
...
Если это нарушить, то ничего работать небудет. На это надо обратить особое внимание при смене компилятора.

Проверьте:
1. наличие частоты на 28 ноге. На схеме нет резистора на 1МОм между 26 и 27 ногами, у меня на некоторых кристаллах незапускался генератор. Если нет осциллографа можно прочитать из USBNки RID регистр, если в младших 4х разрядах не 2(3) то генератор не работает.
2. Если тактовая частота меги128 > 12МГц то работать скорее всего не будет, даже если поставить все такты ожидания на шину. У меня на меге стабильно работает при 2 тактах ожидания на частоте 11.0592МГц. Выше 12МГц нельзя !!!(см доку на USBN и мегу128) у USBN очень медленная шина!!! Можно понизить тактовую частоту меги без перепаивания кварца записав в регистр XDIV 0xff и поделив этим частоту кварца на 2.
3. генерит ли USBN прерывания и ловит ли их mega128.
4. Правильность описания и передачи device_desc.
5. Правильность формированиия PIDов
6. Правильность описания и вызачи конфигурации

А самое лутшее, если у Вас есть rs232 выведите на терминалку все запросы приходящие от хоста и ваши ответы на них. Сразу будет понятно на каком этапе все затытается.

Инициализирую так("лишнее" закоментировал):
unsigned char initUSBN9604(void)
{
unsigned short i;

/* give a soft reset, then set ints to push pull, active hi or lo */
putUSBN(_MCNTRL,SRST);
/* Wait end of reset */
while(getUSBN(_MCNTRL) & SRST);

putUSBN(_MCNTRL, VGE+INT_L_P);
i = 0x4000; while(i--);

/* checking RID */
if ((getUSBN(_RID) & 0x0f) != 0x02) return 0xff;

/* initialize the clock generator set clock freq 24MHz */
putUSBN(_CCONF, clk24);

/* set default address, enable EP0 only */
putUSBN(_FAR,AD_EN + 0x00);
putUSBN(_EPC0, 0x00);

/* set up interrupt masks */
putUSBN(_NAKMSK,NAK_O0); /* NAK evnts */
// putUSBN(_NAKMSK,NAK_O0+NAK_I2); /* NAK evnts */
putUSBN(_TXMSK, TXFIFO0+TXFIFO1+TXFIFO2+TXFIFO3); /*TX events*/
putUSBN(_RXMSK, RXFIFO0+RXFIFO1+RXFIFO2+RXFIFO3); /*RX events*/
putUSBN(_ALTMSK, RESET_A); /*ALT evnts*/
putUSBN(_MAMSK, (INTR_E + RX_EV + NAK + TX_EV + ALT));

/*enable the receiver and go operational ************************/
FLUSHTX0; /* flush TX0 and disable */
putUSBN(_RXC0,RX_EN); /* enable the receiver */

putUSBN(_NFSR,OPR_ST); /* go operational */
putUSBN(_MCNTRL,VGE+INT_L_P+NAT); /* set NODE ATTACH */

getUSBN(_ALTEV);

return 0;
}
Go to the top of the page
 
+Quote Post
nagserg
сообщение Nov 1 2005, 07:13
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Цитата(pulsar-17 @ Jul 28 2005, 23:11)
Цитата(nagserg @ Jul 28 2005, 09:15)
Цитата(MALLOY2 @ Jul 27 2005, 17:28)
подключить девайс к компу в менеджере устройств посмотреть не появляется какое нибудь устройство.
*
При включении сейчас появляется в правом нижнем углу "USB Device Not Recognized". И в менеджере устройств появляется Unknown Device.
*


Эти сообщения скорее всего говорят о том, что устройство подключено к порту, но не отвечает на запросы или отвечает криво(на этом не одну собаку скущал smile.gif). Как правило, это связано с неправильной инициализацией самой USBN, кривым описанием дескрипторов или софтом. На кривоту дескрипторов нарывался при переходе на другой компилер, он структуры с описанием config, interface и endpoint дескрипторов расположил не в заданном порядке, а наоборот. Итог те же сообщения винды.
Запрос конфигурации проходит в два этапа:
1) запрос собственно config дескриптора(в нем прописана помимо его собственного размена размер всей конфигурации в байтах складывающийся из: размер config_desc + размер interface_desc * количество интерфейсов + размер всех endpoint_desc для всех интерфейсов ).
2) запрос всей конфигурации. Он отличается от первого только тем, что в запросе от хоста передается размер всей конфигерации, а не размер только config_desc.
Дескрипторы должны передаваться строго иерархически:
config_desc
interface_desc_1
endpoint_desc_1_1
...
endpoint_desc_1_N
interface_desc_2
endpoint_desc_2_1
...
endpoint_desc_2_N
...
Если это нарушить, то ничего работать небудет. На это надо обратить особое внимание при смене компилятора.

Проверьте:
1. наличие частоты на 28 ноге. На схеме нет резистора на 1МОм между 26 и 27 ногами, у меня на некоторых кристаллах незапускался генератор. Если нет осциллографа можно прочитать из USBNки RID регистр, если в младших 4х разрядах не 2(3) то генератор не работает.
2. Если тактовая частота меги128 > 12МГц то работать скорее всего не будет, даже если поставить все такты ожидания на шину. У меня на меге стабильно работает при 2 тактах ожидания на частоте 11.0592МГц. Выше 12МГц нельзя !!!(см доку на USBN и мегу128) у USBN очень медленная шина!!! Можно понизить тактовую частоту меги без перепаивания кварца записав в регистр XDIV 0xff и поделив этим частоту кварца на 2.
3. генерит ли USBN прерывания и ловит ли их mega128.
4. Правильность описания и передачи device_desc.
5. Правильность формированиия PIDов
6. Правильность описания и вызачи конфигурации

А самое лутшее, если у Вас есть rs232 выведите на терминалку все запросы приходящие от хоста и ваши ответы на них. Сразу будет понятно на каком этапе все затытается.

Инициализирую так("лишнее" закоментировал):
unsigned char initUSBN9604(void)
{
unsigned short i;

/* give a soft reset, then set ints to push pull, active hi or lo */
putUSBN(_MCNTRL,SRST);
/* Wait end of reset */
while(getUSBN(_MCNTRL) & SRST);

putUSBN(_MCNTRL, VGE+INT_L_P);
i = 0x4000; while(i--);

/* checking RID */
if ((getUSBN(_RID) & 0x0f) != 0x02) return 0xff;

/* initialize the clock generator set clock freq 24MHz */
putUSBN(_CCONF, clk24);

/* set default address, enable EP0 only */
putUSBN(_FAR,AD_EN + 0x00);
putUSBN(_EPC0, 0x00);

/* set up interrupt masks */
putUSBN(_NAKMSK,NAK_O0); /* NAK evnts */
// putUSBN(_NAKMSK,NAK_O0+NAK_I2); /* NAK evnts */
putUSBN(_TXMSK, TXFIFO0+TXFIFO1+TXFIFO2+TXFIFO3); /*TX events*/
putUSBN(_RXMSK, RXFIFO0+RXFIFO1+RXFIFO2+RXFIFO3); /*RX events*/
putUSBN(_ALTMSK, RESET_A); /*ALT evnts*/
putUSBN(_MAMSK, (INTR_E + RX_EV + NAK + TX_EV + ALT));

/*enable the receiver and go operational ************************/
FLUSHTX0; /* flush TX0 and disable */
putUSBN(_RXC0,RX_EN); /* enable the receiver */

putUSBN(_NFSR,OPR_ST); /* go operational */
putUSBN(_MCNTRL,VGE+INT_L_P+NAT); /* set NODE ATTACH */

getUSBN(_ALTEV);

return 0;
}
*


Мега работает на частоте 16МГц - в этом то и была причина. Добавил 2-й такт ожидания (1 там уже был) в процедуру чтения байта и всё нормально заработало.
Go to the top of the page
 
+Quote Post
drka
сообщение Nov 1 2005, 10:13
Сообщение #8





Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175



Такая же связка контроллер + USBN.
Проблема в том, что сигнал INT (USBN) не снимается, присутствует флаг RESET в ALTEV, хотя я его (регистр) уже считал и от хоста команды сброса точно не приходит.
Причем т.к. приоритетно отлавливаются события RX и TX, которые, соответственно нормально обрабатываются.
А вот между ними вываливается куча событий RESET.

ps прерывание меги стоит по нулевому уровню
Go to the top of the page
 
+Quote Post
Lynxyk
сообщение Nov 19 2005, 16:32
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 19-11-05
Пользователь №: 11 095



офф\ Сяду на хвост

Не совсем понял архитектуру подключения к хосту.

связка контроллер + USBN 1 штука увидится
А если их будет 8?
В случае с FTDI нужно вешать влешку типа ат93с46 с VID,PID
А вUSBN9603-4 есть некий мак контроль. Он просто отрубает каждое последующее усройство, ии же этот мак уже зашит в усбн, и соотв /USBN96хх выгодней чем FTDI, тк флешку вешать не надо??

\офф

Заранее пасип за комментарии
Go to the top of the page
 
+Quote Post
drka
сообщение Nov 20 2005, 13:47
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175



Думаю проблем не будет. В самой USBN нет ничего отвечающего за VID и PID. Весь протокол перекладывается на "плечи" микроконтроллера.
Кстати, свой предыдущий вопрос отменяю, сам разобрался со всем.
Go to the top of the page
 
+Quote Post
Lynxyk
сообщение Nov 20 2005, 15:18
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 19-11-05
Пользователь №: 11 095



2 drka
те весь протокол реализовывается программно. а usbn типа макса, только для согласования?
ясно. пошёл тупить усбмастер заново. не видел я там пока идентификацию(суть первый пакет видимо).
Если я понял правильно, то это где то в инициализации усб?
При включении:
1.Инициализируется внутренний генератор
2.включается интрефейс
3.инициация процесса нумерации
4.конфигурируется нулевая конечная точка
5.сброс нулевой конечной точки
6.разрешение прерываний от 0 конечной точки

а когда идентификация проходит?
Go to the top of the page
 
+Quote Post
drka
сообщение Nov 20 2005, 15:29
Сообщение #12





Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175



Цитата(Lynxyk @ Nov 20 2005, 20:18) *
те весь протокол реализовывается программно. а usbn типа макса, только для согласования?
ясно. пошёл тупить усбмастер заново. не видел я там пока идентификацию(суть первый пакет видимо).
Если я понял правильно, то это где то в инициализации усб?
При включении:
1.Инициализируется внутренний генератор
2.включается интрефейс
3.инициация процесса нумерации
4.конфигурируется нулевая конечная точка
5.сброс нулевой конечной точки
6.разрешение прерываний от 0 конечной точки

а когда идентификация проходит?

может я чего не допонимаю в вопросе. Что ТЫ подразумеваешь под термином идентификация?
Нет, ЮСБН, не просто согласование - семь конечных точек, 7 FIFO, DMA и т.д.
Под перекладыванием на плечи контроллера я имелл виду процесс энумерации (ведь VID и PID нужны на этом этапе). ЮСБН, все что надо принимает и складывает в соответствующие FIFO соответствующих конечных точек, а уж что это за данные и как ими распорядиться, решает контроллер.
Я начинал делать тоже глядя на ЮСБмастерс + чтение спецификаций + мониторя всё что можно мониторить.
Go to the top of the page
 
+Quote Post
Alechin
сообщение Nov 24 2005, 15:56
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



Вот мой исходник драйвера USBN9604, правда с 51 контроллера. Рабочий. Хорошо откомментированный.
Прикрепленные файлы
Прикрепленный файл  USB.ZIP ( 15.48 килобайт ) Кол-во скачиваний: 97
 
Go to the top of the page
 
+Quote Post
drka
сообщение Nov 24 2005, 16:50
Сообщение #14





Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175



В данный момент близок к реализации Mass Storage Device, если кому-то будет полезно могу поделиться информацией и наблюдениями.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Nov 25 2005, 06:11
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(drka @ Nov 24 2005, 19:50) *
В данный момент близок к реализации Mass Storage Device, если кому-то будет полезно могу поделиться информацией и наблюдениями.

Крайне интересно! Скоро самому придется заниматься этой темой.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016