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

 
 
> 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
 
Start new topic
Ответов
public32
сообщение Jan 7 2010, 18:14
Сообщение #2





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

Сообщений в этой теме
- nagserg   MEGA128 + USB на USBN9604   Jul 27 2005, 13:35
- - m16   попытался скачать шит на USBN9604 с указанн...   Jul 27 2005, 14:18
- - MALLOY2   драйвер сдесь не причем, до него еще дело не дошло...   Jul 27 2005, 14:28
|- - nagserg   Цитата(MALLOY2 @ Jul 27 2005, 17:28)подключит...   Jul 28 2005, 06:15
|- - pulsar-17   Цитата(nagserg @ Jul 28 2005, 09:15)Цитата(MA...   Jul 28 2005, 20:11
|- - nagserg   Цитата(pulsar-17 @ Jul 28 2005, 23:11)Ци...   Nov 1 2005, 07:13
- - BVU   Если Вы правильно организовали USB стек-протокол(с...   Jul 28 2005, 08:39
- - drka   Такая же связка контроллер + USBN. Проблема в том,...   Nov 1 2005, 10:13
- - Lynxyk   офф\ Сяду на хвост Не совсем понял архитекту...   Nov 19 2005, 16:32
- - drka   Думаю проблем не будет. В самой USBN нет ничего от...   Nov 20 2005, 13:47
- - Lynxyk   2 drka те весь протокол реализовывается программно...   Nov 20 2005, 15:18
|- - drka   Цитата(Lynxyk @ Nov 20 2005, 20:18) те ве...   Nov 20 2005, 15:29
|- - Alechin   Вот мой исходник драйвера USBN9604, правда с 51 ко...   Nov 24 2005, 15:56
- - drka   В данный момент близок к реализации Mass Storage D...   Nov 24 2005, 16:50
|- - Igor26   Цитата(drka @ Nov 24 2005, 19:50) В данны...   Nov 25 2005, 06:11
||- - drka   Цитата(Igor26 @ Nov 25 2005, 11:11) Крайн...   Nov 25 2005, 06:45
||- - Igor26   Цитата(drka @ Nov 25 2005, 09:45) Цитата(...   Nov 25 2005, 07:29
|- - galjoen   Цитата(drka @ Nov 24 2005, 19:50) В данны...   Jan 7 2010, 18:41
- - IgorKossak   Немного не по теме Иногда, когда дивайс не опре...   Nov 25 2005, 09:13
|- - Igor26   Цитата(IgorKossak @ Nov 25 2005, 12:13) Н...   Nov 25 2005, 09:43
- - public32   покупал в чипе-дипе http://www.chipdip.ru/product0...   Jan 7 2010, 19:04
|- - galjoen   Цитата(public32 @ Jan 7 2010, 22:04) поку...   Jan 7 2010, 19:31
- - public32   спасибо большое! да, все более-менее понятно.....   Jan 8 2010, 16:03


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

 


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


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