|
MEGA128 + USB на USBN9604, Комп не видит девайс |
|
|
|
Jul 27 2005, 13:35
|
Участник

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

|
Решил изучить USB. Вот собрал USB на USBN9604 с сайта USB Masters, только вместо AT90S8515 поставил MEGA128, перевел программу в CodeVisionAVR, залил в МЕГУ, при подсоединении к компу, он (комп) даже не видит, что подключено новое устройство, в чем может быть проблема?
|
|
|
|
|
Jul 28 2005, 06:15
|
Участник

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

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

Участник

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

|
Цитата(nagserg @ Jul 28 2005, 09:15) Цитата(MALLOY2 @ Jul 27 2005, 17:28) подключить девайс к компу в менеджере устройств посмотреть не появляется какое нибудь устройство. При включении сейчас появляется в правом нижнем углу "USB Device Not Recognized". И в менеджере устройств появляется Unknown Device. Эти сообщения скорее всего говорят о том, что устройство подключено к порту, но не отвечает на запросы или отвечает криво(на этом не одну собаку скущал  ). Как правило, это связано с неправильной инициализацией самой 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; }
|
|
|
|
|
Nov 1 2005, 07:13
|
Участник

Группа: Участник
Сообщений: 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. Эти сообщения скорее всего говорят о том, что устройство подключено к порту, но не отвечает на запросы или отвечает криво(на этом не одну собаку скущал  ). Как правило, это связано с неправильной инициализацией самой 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 там уже был) в процедуру чтения байта и всё нормально заработало.
|
|
|
|
|
Nov 1 2005, 10:13
|
Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175

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

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

|
офф\ Сяду на хвост
Не совсем понял архитектуру подключения к хосту.
связка контроллер + USBN 1 штука увидится А если их будет 8? В случае с FTDI нужно вешать влешку типа ат93с46 с VID,PID А вUSBN9603-4 есть некий мак контроль. Он просто отрубает каждое последующее усройство, ии же этот мак уже зашит в усбн, и соотв /USBN96хх выгодней чем FTDI, тк флешку вешать не надо??
\офф
Заранее пасип за комментарии
|
|
|
|
|
Nov 20 2005, 13:47
|
Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175

|
Думаю проблем не будет. В самой USBN нет ничего отвечающего за VID и PID. Весь протокол перекладывается на "плечи" микроконтроллера. Кстати, свой предыдущий вопрос отменяю, сам разобрался со всем.
|
|
|
|
|
Nov 20 2005, 15:18
|
Участник

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

|
2 drka те весь протокол реализовывается программно. а usbn типа макса, только для согласования? ясно. пошёл тупить усбмастер заново. не видел я там пока идентификацию(суть первый пакет видимо). Если я понял правильно, то это где то в инициализации усб? При включении: 1.Инициализируется внутренний генератор 2.включается интрефейс 3.инициация процесса нумерации 4.конфигурируется нулевая конечная точка 5.сброс нулевой конечной точки 6.разрешение прерываний от 0 конечной точки
а когда идентификация проходит?
|
|
|
|
|
Nov 20 2005, 15:29
|
Группа: Новичок
Сообщений: 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 соответствующих конечных точек, а уж что это за данные и как ими распорядиться, решает контроллер. Я начинал делать тоже глядя на ЮСБмастерс + чтение спецификаций + мониторя всё что можно мониторить.
|
|
|
|
|
Nov 24 2005, 15:56
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Вот мой исходник драйвера USBN9604, правда с 51 контроллера. Рабочий. Хорошо откомментированный.
Прикрепленные файлы
USB.ZIP ( 15.48 килобайт )
Кол-во скачиваний: 97
|
|
|
|
|
Nov 24 2005, 16:50
|
Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175

|
В данный момент близок к реализации Mass Storage Device, если кому-то будет полезно могу поделиться информацией и наблюдениями.
|
|
|
|
|
Nov 25 2005, 06:45
|
Группа: Новичок
Сообщений: 9
Регистрация: 27-10-05
Пользователь №: 10 175

|
Цитата(Igor26 @ Nov 25 2005, 11:11)  Крайне интересно! Скоро самому придется заниматься этой темой. Спрашивай, все что знаю расскажу. :-)
|
|
|
|
|
Jan 7 2010, 18:14
|
Группа: Участник
Сообщений: 5
Регистрация: 7-01-10
Пользователь №: 54 664

|
Друзья, уже с неделю мучаюсь с usbn9604, подружить его пытаюсь с at89s8253 (знаю, что ядро не avr, но здесь меня больше вопрос интерфейса волнует). использовал примеры UsbMasters... Проблема в следующем - насколько я понимаю, в процессе инициализации в регистр адреса FAR не встает бит AD_EN (0x80), как следствие, устройство не отвечает хосту и на компе вылезает надпись, подключено новое устройство, устройство работает не правильно (не опознано). на моей плате есть рабочий ЖК - туда вывожу состояния регистров (они читаются - т.е. функции USB_WR и USB_RD работают). когда вставляю кабель в комп у устройства начинают срабатывать прерывания по алтернативному регистру, но суть события заключается либо в окончании пакета (EOP - 0x08 в регистре ALTEV) либо вообще непонятно что (0x00 в регистре ALTEV). Точнее так - сначала где-то с пару секунд висит EOP (т.е. постоянно срабатывает), а через пару секунд на компе вылезает надпись, что не опознано устройство и в ALTEV приходит только 0x00. Если я все правильно понимаю - проблема в инициализации где-то, т.к. регистр FAR из состояния 0x00 не выходит в принципе (даже когда на всякий случай добавил USB_WR(FAR,0x80) в конце инициализации - в FAR остался 0x00)... Нифига понять не могу что делать  или куда посмотреть еще... прям ступор какой-то... привожу из кода функцию инициализации и на всякий функции USB_WR и USB_RD: CODE void Init_USBN9604(void) { unsigned char c[8]; unsigned char Event; usb_cfg = 0; address = 0; USB_WR(MCNTRL,SRST); //Инициируем програмный сброс USBN9604 while(USB_RD(MCNTRL)&SRST); // ожидаем окончания сброса USB_WR(MCNTRL,VGE+INT_L_P);//Выбираем режим для INTR - Low Push Pull, включаем 3.3B Voltage Regulator NOP(0x4000); // функция задержки - название из асма позаимствовано  if((USB_RD(RID)&0x0f)!=0x02) LCDPuts(0,4,"RID"); // чтение идентификатора устройства - если там не все в порядке - на экран сообщение USB_WR(FAR,AD_EN+0x00); //Устанавливаем у функции Default address ВОТ ЗДЕСЬ НАЧИНАЮТСЯ ПРОБЛЕМЫ USB_WR(EPC0, 0x00); //Endpoint 0 Normal operation USB_WR(NAKMSK,NAK_O0+NAK_I3); //Разрешаем прерывания по NAK событиям USB_WR(RXMSK,RXFIFO0+RXFIFO3); //Разрешаем прерывания по RX событиям USB_WR(TXMSK,TXFIFO0+TXFIFO3); //Разрешаем прерывания по TX событиям USB_WR(ALTMSK,SD3+SD5+RESET_A); //Разрешаем прерывания по ALT событиям - таймауты и перезапуск от хоста USB_WR(MAMSK,(INTR_E+RX_EV+NAK+TX_EV+ALT)); //Разрешаем прерывания глобально FLUSHTX0(); //Очищаем TXFIFO0 и запрещаем выдачу из него данных USB_WR(RXC0,RX_EN); //Разрешаем прием данных в Endpoint0 USB_WR(NFSR,OPR_ST); //Переходим в Operational State USB_WR(MCNTRL,VGE+INT_L_P+NAT); //Устанавливаем напряжение, уровень прерывания и запускаемся USB_RD(ALTEV); //очищаем буфер альтернативных событий Event=USB_RD(FAR); // проверяем адресный регистр и всегда обнаруживаем там 0x00 (((((((((( sprintf(c,"F%d ",(int)Event); LCDPuts(0,1,c); } Функции общения с чипом: CODE void USB_WR(char U_ADDR,char U_DATA) { SETBIT(P3,ALE); /*Устанавливаем ALE в 1 */ CLRBIT(P3,CS); /*Устанавливаем CS в 0 Выбираем USBN9604*/ NOP(10); P1=U_ADDR; /*Выдаем адрес регистра*/ NOP(50); CLRBIT(P3,ALE); /*Сбрасываем ALE в '0', защелкивая адрес*/ CLRBIT(P3,WR); /*Сбрасываем WR в '0', инициируя запись*/ NOP(10); P1=U_DATA; /*Выставляем на шину данные*/ NOP(50); SETBIT(P3,WR); /* Защелкиваем данные '1' на WR*/ SETBIT(P3,CS); /* Устанавливаем CS в '1' - отключаем микросхему*/ }
unsigned char USB_RD(char U_ADDR) { char U_DATA; CLRBIT(P3,CS); /*Устанавливаем CS в 0 Выбираем USBN9604*/ SETBIT(P3,ALE); /*Устанавливаем A0 в 1 */ CLRBIT(P3,WR); /*Сбрасываем WR в '0', инициируя запись*/ NOP(50); P1=U_ADDR; /*Выдаем адрес регистра*/ SETBIT(P3,WR); /* Защелкиваем адрес '1' на WR*/ CLRBIT(P3,ALE); /*Устанавливаем A0 в 0 */ CLRBIT(P3,RD); /*Сбрасываем RD в '0', инициируя чтение*/ NOP(50); U_DATA=P1; /*Считываем данные с шины*/ SETBIT(P3,RD); /* Защелкиваем данные '1' на RD*/ SETBIT(P3,CS); /* Устанавливаем CS в '1' - отключаем микросхему*/ return(U_DATA); } Пожалуйста помогите - хоть скажите куда смотреть... весь инет уже облазил ((( обещаю отдельной темой в 8051 выложить проект  я тут еще один вещь заметил: написал в тексте для проверки USB_WR(NAKMSK,0x55); (когда прочитал и на дисплей вывел - пришло только 0x05) а после этого написал USB_WR(NAKMSK,0xaa); (когда прочитал и на дисплей вывел - пришло только 0x0a) получается у меня со старшими разрядами что-то... может с генератором что... у меня стоит резонатор на 24 МГц и конденсаторы по 18пФ (про мегаомный резистор в параллель - не забыл).
|
|
|
|
|
Jan 7 2010, 18:41
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(drka @ Nov 24 2005, 19:50)  В данный момент близок к реализации Mass Storage Device, если кому-то будет полезно могу поделиться информацией и наблюдениями. Давным-давно реализовал составное устройство HID+MassStorage на связке USBN9604+AT45DB642D+ATmega/AT90CAN. Думал это уже никому не интересно. Думал, что и USBN9604 то уже с производства снимают, поэтому подзатарился для возможного спроса/ремонта. А где вы эти USBN9604 покупаете? И сколько они стоят? Я через друга, который живёт в США, купил. Около 70 руб. штука обошлись. Мне USBN9604, несмотря на тормозную шину (на 16 мГц даже с максимальной задержкой не все работают) и кое-какие глюки (если интересно опишу), очень понравились. У современных, встроенных в микроконтроллеры, систем таких возможностей нет. М.б. я рано USBN9604 в утиль списал? По теме: 1. Могу рекомендовать использовать 2 незадействованные EP для того, чтобы у EP0 было FIFO 64 байта. USBN9604, в отличие от других, позволяет адрес EP устанавливать, в т.ч. и одинаковые адреса у разным EP. Да и работать удобнее когда для данных туда, данных сюда и SETUP-а разные буфера. Хотя с энумерацией повозится придётся, но там полюбому нужно возится чтобы при включении компа, со вставленным в него USB девайсом, он нормально загружался (любой комп). 2. В MassStorage можно данные из AT45DB642D в USBN9604 минуя процессор отправлять если их на одну шину посадить. Получается даже лучше, чем ПДП, потому, что процессор вообще свободен, только таймерами сигналы формирует. И скорость чтения MassStorage (если CRC не считать и HIDа ,с зарезервированной под него пропускной способностью шины USB, нет) получается строго 1 мБайт в секунду. Т.е. теоретический предел пропускной способности full speed USB. public32, не понял, а где у вас передача дескрипторов хосту? О какой установке адреса (и где у вас обрабатывается получение SETUP пакета SET_ADDRESS?) вы говорите до того, как отправили хосту дескриптор DEVICE? Этот дескриптор (и какой он у вас?) хосту нормально отправляется? ACK от хоста на него вы получаете? NAK-и на первое время можете вообще не обрабатывать. Запретите прерывания по ним и всё. А вот когда ваш девайс определятся начнёт, тогда это может понадобится.
|
|
|
|
|
Jan 7 2010, 19:04
|
Группа: Участник
Сообщений: 5
Регистрация: 7-01-10
Пользователь №: 54 664

|
покупал в чипе-дипе http://www.chipdip.ru/product0/959352017.aspxа кусочка кода с инициализацией устройства не осталось? мне бы инициализацию пройти... с endpointами разберемся
|
|
|
|
|
Jan 7 2010, 19:31
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(public32 @ Jan 7 2010, 22:04)  покупал в чипе-дипе http://www.chipdip.ru/product0/959352017.aspxа кусочка кода с инициализацией устройства не осталось? мне бы инициализацию пройти... с endpointами разберемся  Да, цены однако... Я всё на асме написал, вам не подойдёт, но инициализация в виде таблицы регист-значение имеется. Некоторые из регистров/битов в родном описании не описаны, я их сам описал. Не помню присутствуют ли они в инициализации, но если что по названию разберётесь. AdXX это мои адреса EP, но это вроде и так понятно. Код Ti9604:; таблица начальной инициализации 9604 (без присоединения) .db MCNTRL, VGE; токо +3.3V (отаттачено и без прер-ний) ;.db MCNTRL, 0; нет +3.3V, отаттачено и без прер-ний .db NEPC0, 0; снимем STALL и DEF у EP0 .db CCONF, 0x0B; частота 4 Мгц .db NEPC1, 0; временно запретим EP1 .db NEPC2, 0; временно запретим EP2 .db NEPC3, 0; запретим EP3 .db NEPC4, 0; запретим EP4 .db NEPC5, 0; запретим EP5 .db NEPC6, 0; запретим EP6 .db WKUP, ENUC|ENUSB; + чистим PNDUC и PNDUSB .db MAMSK, INTR_E|RX_EV|NAK|TX_EV|ALT|WARN; разр. прер. .db RXMSK, RXFIFO1|RXFIFO0; прер. токо от EP0 (EP1 - она-же) ;.db ALTMSK, RESET_A|SD3; прер. по сбросу и suspend3ms .db ALTMSK, RESET_A; прер. токо по сбросу без suspend3ms .db TXMSK, TXFIFO1|TXFIFO0; прер. токо от EP0 (EP1 - она-же) ;.db NAKMSK, 0x77; NAK для EP0, EP1,3 (TX), EP2,4 (RX) .db NTXC1, FLUSH; чистим FIFO передачи EP1 .db NTXC2, TFWL4|FLUSH|TX_TOGL; чистим FIFO пер-чи EP3 (и DATA0) .db NRXC1, FLUSH|IGN_SETUP; FIFO приёма EP2 + запр. SETUP .db NRXC2, FLUSH|IGN_SETUP; FIFO приёма EP4 + запр. SETUP .db NTXC0, FLUSH|IGN_IN; FIFO передачи EP0 + запр. IN .db NRXC0, FLUSH|IGN_OUT; приема 0 + запр. OUT (SETUP разр.) .db FAR, AD_EN; адрес по умолчанию (0x00) .db NEPC1, EP_EN; чтоб на IN отвечали NAK-ом .db NEPC2, EP_EN; чтоб на OUT отвечали NAK-ом .db NEPC3, EP_EN|AdBI; чтоб на Bulk-IN отвечали NAK-ом .db NEPC4, EP_EN|AdBO; чтоб на Bulk-OUT отвечали NAK-ом .db NEPC5, EP_EN|AdII; чтоб на Interrupt-IN отвечали NAK-ом .db DMCNTRL, DMEP3; запрещённый DMA к передающей EP3 ;.db NFSR, OPR_ST; режим работа .db 0xFF, 0xFF; признак конца таблицы Можете раскоментировать .db NFSR, OPR_ST ; режим работа тогда подключится, но обработчики прерываний у вас д.б. Только сейчас дошло, что тема в 2005 году начата :D
|
|
|
|
|
Jan 8 2010, 16:03
|
Группа: Участник
Сообщений: 5
Регистрация: 7-01-10
Пользователь №: 54 664

|
спасибо большое! да, все более-менее понятно... язык он и в Африке язык  У меня такое ощущение, что я не ту емкость взял на кристалл... было при 22 пФ и при 18 пФ - сейчас купил 15 (как в даташите) и 39 (встречал в инете на схемах)... может пойдет... блин действительно  2005  уже отчаяние бьет потихоньку... медленно склоняюсь к покупке ftdi... (( пытался частоту посмотреть на осциллографе, но из-за его входного импеданса в 50 Ом  ... частота получилась порядка 200 Гц... долго не мог поверить глазам, пока про 50Ом не вспомнил
Сообщение отредактировал public32 - Jan 8 2010, 16:05
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|