Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Форум разработчиков РЭА »
Проблемы с Philips ISP1581

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   Проблемы с Philips ISP1581
Seven
unregistered
написано 30 Мая 2006 01:48  ПравкаОтветитьIP

Ни в какую не приходит пакет Setup на Philips 1581. Работаю по прерываниям (хотя работал по опросу, результат тот же. Контроллер MCS51 семейства. Листинг программы:

void main(void)
{
usb_init();

EX1=1;
EA=1;

while(1)
{

/* если получен пакет SETUP */
if(USB_INT2.BITS.EP0SETUP!=0)
{
USB_INT2.BITS.EP0SETUP=0;

/* начать процесс нумерации и разбора запроса */
usb_read_request();
}

if(USB_INT1.VALUE!=0)
{


/* если получен сигнал "засыпания" */
if((USB_INT1.VALUE&MSK_SUSPI))
{
USB_INT1.BITS.SUSP=0;
MDREG|=MSK_SUSP;
MODEREGWR();
MDREG&=~MSK_SUSP;
MODEREGWR();
}

// если получен сигнал побудки
if(USB_INT1.VALUE&MSK_RESUMEI)
{
/* сброс режима SUSPEND */

USB_INT1.BITS.RESUME=0;
MDREG|=MSK_SNDRESM;
MODEREGWR();
MDREG&=~MSK_SNDRESM;
MODEREGWR();

}
}
}
}

void usb_init()
{
unsigned int del=15000;

U_CS=0;
U_CS=1;
WR=1;
RD=1;
ALE=0;
U_CS=1;

EA=0;

do
{
U_RESET=0;

for(;del!=0;del--);

U_RESET=1;

for(del=15000;del!=0;del--);

if((U_READ(0x72)==0x15)&&(U_READ(0x71)==0x81))
break;
}
while(1);

for(del=1500;del!=0;del--);

usb_reg_init();
}

void usb_reg_init(void)
{
TESTMODREG_Value(MSK_FORCEFS);

MDREG=0x8D;
MODEREG_Value(MDREG);

INTCONFREG_Value(0x54);//0x54

ENINTREG4_Value(0);
ENINTREG3_Value(0);
ENINTREG2_Value(0xFF);
ENINTREG1_Value(0x39);
}

[Это сообщение изменил Весельчак У (изменение 03 Июня 2006 21:30).]

Seven
Junior Member

Сообщений: 1
Регистрация: Май 2006

написано 31 Мая 2006 02:10ИнфоПравкаОтветитьIP

Всё оказалось просто: забыл в setaddress выставить бит enable

03 Июня 2006 21:29 Весельчак У приклеил тему "Проблема с отправкой дескриптора на ISP1581".
Seven
Junior Member

Сообщений: 2
Регистрация: Май 2006

написано 03 Июня 2006 18:53ИнфоПравкаОтветитьIP

Используется связка ISP1581+T89C51CC02. Получаю пакет setup, запрос дескриптора Device, отправляю и жду установки флага об окончании передачи. В трети случаев на этой проверке и зависаю, т.е. флаг не устанавливается. Вот текст программы:
switch (descriptor_type)
{
/* дескриптор устройства */
case DEVICE:
{
data_to_transfer = sizeof(usb_device_descriptor);
pbuffer = &(usb_device_descriptor.bLength);

Set_index(1);

Len_LSB(0x12);
Len_MSB(0);

while(data_to_transfer!=0)
{
Usb_write_byte(*pbuffer);
pbuffer++;
data_to_transfer--;
}

while(!(USB_INT2.VALUE&MSK_EP0TX));///////////Зависаем здесь

USB_INT2.BITS.EP0TX=0;

Set_index(0);

Usb_set_CONTROLFUN(2);

break;
}

Часто проскакиваю, получаю set Adress, устанавливаю, получаю setup с запросом дескриптора Device и снова висну на этой проверке.

Посмотрел, вместо ожидаемого TX приходит Reset (!!!) и после него setup с запросом дескриптора Device.

В чём может быть причина?

nagserg
Junior Member

Сообщений: 21
Регистрация: Декабрь 2005

написано 06 Июня 2006 09:22ИнфоПравкаОтветитьIP

Прерывания разрешены во время обработки дескриптора? Если нет, то флаг EP0TX не выставится.

Добавление от 06 Июня 2006 09:40:

Или надо читать регистр прерываний
У меня сделано вот так:

while(!USB_Int_Flag.BITS.EP0TX)
{
USB_Int_Flag.VALUE |= D14_Cntrl_Reg->D14_INT.VALUE; // читаем регистр прерываний
D14_Cntrl_Reg->D14_INT.VALUE = USB_Int_Flag.VALUE; // очищаем флаг прерывания
}

USB_Int_Flag.BITS.EP0TX = 0;

Seven
Junior Member

Сообщений: 3
Регистрация: Май 2006

написано 09 Июня 2006 21:07ИнфоПравкаОтветитьIP

Прерывания конечно раазрешены. В том-то и дело, что уже устройство получило адрес, идёт отправка дескриптора и вдруг приходит reset и новые пакеты setup.

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика