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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> MEGA128 + USB на USBN9604, Комп не видит девайс
drka
сообщение Nov 25 2005, 06:45
Сообщение #16





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



Цитата(Igor26 @ Nov 25 2005, 11:11) *
Крайне интересно! Скоро самому придется заниматься этой темой.


Спрашивай, все что знаю расскажу. :-)
Go to the top of the page
 
+Quote Post
Igor26
сообщение Nov 25 2005, 07:29
Сообщение #17


Знающий
****

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



Цитата(drka @ Nov 25 2005, 09:45) *
Цитата(Igor26 @ Nov 25 2005, 11:11) *

Крайне интересно! Скоро самому придется заниматься этой темой.


Спрашивай, все что знаю расскажу. :-)

Спасибо!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 25 2005, 09:13
Сообщение #18


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Немного не по теме bb-offtopic.gif
Иногда, когда дивайс не определяется, возможны и такие варианты. wink.gif
Go to the top of the page
 
+Quote Post
Igor26
сообщение Nov 25 2005, 09:43
Сообщение #19


Знающий
****

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



Цитата(IgorKossak @ Nov 25 2005, 12:13) *
Немного не по теме bb-offtopic.gif
Иногда, когда дивайс не определяется, возможны и такие варианты. wink.gif


О как!!!
Go to the top of the page
 
+Quote Post
public32
сообщение Jan 7 2010, 18:14
Сообщение #20





Группа: Участник
Сообщений: 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)...

Нифига понять не могу что делать smile.gif или куда посмотреть еще... прям ступор какой-то...

привожу из кода функцию инициализации и на всякий функции 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); // функция задержки - название из асма позаимствовано smile.gif

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); //Устанавливаем напряжение, уровень прерывания и запускаемся smile.gif

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 выложить проект smile.gif

я тут еще один вещь заметил:
написал в тексте для проверки
USB_WR(NAKMSK,0x55);
(когда прочитал и на дисплей вывел - пришло только 0x05)
а после этого написал
USB_WR(NAKMSK,0xaa);
(когда прочитал и на дисплей вывел - пришло только 0x0a)

получается у меня со старшими разрядами что-то...
может с генератором что... у меня стоит резонатор на 24 МГц и конденсаторы по 18пФ (про мегаомный резистор в параллель - не забыл).
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 7 2010, 18:41
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 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-и на первое время можете вообще не обрабатывать. Запретите прерывания по ним и всё. А вот когда ваш девайс определятся начнёт, тогда это может понадобится.
Go to the top of the page
 
+Quote Post
public32
сообщение Jan 7 2010, 19:04
Сообщение #22





Группа: Участник
Сообщений: 5
Регистрация: 7-01-10
Пользователь №: 54 664



покупал в чипе-дипе
http://www.chipdip.ru/product0/959352017.aspx

а кусочка кода с инициализацией устройства не осталось? мне бы инициализацию пройти... с endpointами разберемся smile.gif
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 7 2010, 19:31
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(public32 @ Jan 7 2010, 22:04) *
покупал в чипе-дипе
http://www.chipdip.ru/product0/959352017.aspx

а кусочка кода с инициализацией устройства не осталось? мне бы инициализацию пройти... с endpointами разберемся smile.gif

Да, цены однако...

Я всё на асме написал, вам не подойдёт, но инициализация в виде таблицы регист-значение имеется. Некоторые из регистров/битов в родном описании не описаны, я их сам описал. Не помню присутствуют ли они в инициализации, но если что по названию разберётесь. 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
Go to the top of the page
 
+Quote Post
public32
сообщение Jan 8 2010, 16:03
Сообщение #24





Группа: Участник
Сообщений: 5
Регистрация: 7-01-10
Пользователь №: 54 664



спасибо большое! да, все более-менее понятно... язык он и в Африке язык smile.gif

У меня такое ощущение, что я не ту емкость взял на кристалл... было при 22 пФ и при 18 пФ - сейчас купил 15 (как в даташите) и 39 (встречал в инете на схемах)... может пойдет...

блин действительно smile.gif 2005 smile.gif уже отчаяние бьет потихоньку... медленно склоняюсь к покупке ftdi... ((
пытался частоту посмотреть на осциллографе, но из-за его входного импеданса в 50 Ом smile.gif ... частота получилась порядка 200 Гц... долго не мог поверить глазам, пока про 50Ом не вспомнил smile.gif

Сообщение отредактировал public32 - Jan 8 2010, 16:05
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 - 20:12
Рейтинг@Mail.ru


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