Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: непонятки в USB и isp1581
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Mozart
когда от isp1581 приходит прерывание от ноги INT то я обрабытываю "Interrupt register (address: 18H)" если прерывание пришло от EP0SETUP, то я обрабатываю данные и выясняю какой запрос пришёл от хоста?? (e.g. get_descriptor, get_status...)????
я правильно понимаю???

вся программа сводится к тому чтобы правильно инициировать isp1581 + настроить конечные точки + отвечать на запросы хоста + своё приложение которое отправляет/принимает данные в/из хост/а??


з.ы. железки пока нет. надеюсь будет в пн.
aaarrr
Цитата(Mozart @ Apr 24 2008, 11:46) *
когда от isp1581 приходит прерывание от ноги INT то я обрабытываю "Interrupt register (address: 18H)" если прерывание пришло от EP0SETUP, то я обрабатываю данные и выясняю какой запрос пришёл от хоста?? (e.g. get_descriptor, get_status...)????
я правильно понимаю???

Да.

Цитата(Mozart @ Apr 24 2008, 11:46) *
вся программа сводится к тому чтобы правильно инициировать isp1581 + настроить конечные точки + отвечать на запросы хоста + своё приложение которое отправляет/принимает данные в/из хост/а??
з.ы. железки пока нет. надеюсь будет в пн.

К этому сводится программа для практически любого USB контроллера. Если опыт работы с USB есть, то освоить новый контроллер проблемы не составляет.

А Вы в курсе, что ISP1581 снимают с производства?
Mozart
Цитата(aaarrr @ Apr 24 2008, 12:32) *
Да.
К этому сводится программа для практически любого USB контроллера. Если опыт работы с USB есть, то освоить новый контроллер проблемы не составляет.

А Вы в курсе, что ISP1581 снимают с производства?

да, просто в магазине isp1583 пока нету, по крайне мере в терре, а для изучения я думаю, пока хватит.
Mozart
в исходниках от philipsа есть такие строчки кода к примеру
Код

D14_Cntrl_Reg.D14_ENDPT_INDEX = 0;
D14_Cntrl_Reg.D14_CONTROL_FUNCTION.BITS.STATUS = 1;

и правильно ли я понимаю что на эпюрах в даташите, автоматически устанавливаются сигналы RD/WR, CS, A0/ALE??

з.ы. просто написал что-то стрёмно что не правильно... а железка скоро появится...
Mozart
при чтении с ISP1581 получаю одни нули.
последовательность действий такая:
Код
int ReadByteFromISP(unsigned char reg)
{
    int result;
    USBDATA_directt = 0x0000;     //input
    
    USBADDRESS_port = reg;  //set register
    USBCONTROL_port &= ~(1 << ISP_CS);
    USBCONTROL_port &= ~(1 << ISP_RD);

    result = USBDATA_port;

    USBCONTROL_port |= (1 << ISP_RD);
    USBCONTROL_port |= (1 << ISP_CS);

    return result;
}

включён по схеме generic mode: mode1 = mode0 = bus_conf = 1
что может не так?...

конфигурационный пакет заполняется 0х20...
aaarrr
А что осциллограф показывает?

Цитата(Mozart @ May 15 2008, 17:43) *
конфигурационный пакет заполняется 0х20...

07.gif ?????
Mozart
Цитата(aaarrr @ May 15 2008, 17:45) *
А что осциллограф показывает?
07.gif ?????

ваще фигня выходит... вместо 0х0С на выходе 0х03... будем смотреть...

з.ы. вообще не удобно смотреть на этих ножках...
aaarrr
Я, конечно, извиняюсь, но постарайтесь писать вопросы так, чтобы их мог понять кто-нибудь еще. А то получаются мысли вслух.
Mozart
Цитата(aaarrr @ May 15 2008, 19:07) *
Я, конечно, извиняюсь, но постарайтесь писать вопросы так, чтобы их мог понять кто-нибудь еще. А то получаются мысли вслух.
да, хорошо...

проинициализировал я этот исп, и даже USB Trace написал в логе "QUERY_RESOURCES" вот что это значит?? и где надо прописывать VID PID, вот в этом регистре "Chip ID"?
дрова для юсб я не ставил.
инициализация (исп включён как GENERIC_MODE)
Код
    DataControl |= (1 << RESET);
    IOWR_ALTERA_AVALON_PIO_DATA(USBCONTROL_BASE, DataControl);

    ptrStIsp1581->HS_FS_State = FULL_SPEED;
    
    RegISP->Mode =  (1 << ISP_MODE_SOFTCT)|(1 << ISP_MODE_GLINTENA)|    \
                    (1 << ISP_MODE_CLKAON);
   WriteByteToISP(ISP_REG_MODE, RegISP->Mode);
    
    WriteByteToISP(ISP_REG_INT_ENABLE, 0xFFFF);
    WriteByteToISP(ISP_REG_INT_ENABLE + 1, 0xFFFF);

    RegISP->ChID[0] = 0x1012;
    RegISP->ChID[1] = 0x0015;
    WriteByteToISP(ISP_REG_CHIP_ID, RegISP->ChID[0]);
    WriteByteToISP(ISP_REG_CHIP_ID + 1, RegISP->ChID[1]);
    
    Init_Endpoint();
aaarrr
Цитата(Mozart @ May 20 2008, 13:55) *
и где надо прописывать VID PID, вот в этом регистре "Chip ID"?

VID и PID нужно прописывать в своей программе. Автоматической энумерации (как у Cypress) у ISP1581 нет. Весь USB Chapter 9 нужно реализовать руками.
Mozart
Цитата(aaarrr @ May 20 2008, 14:03) *
VID и PID нужно прописывать в своей программе. Автоматической энумерации (как у Cypress) у ISP1581 нет. Весь USB Chapter 9 нужно реализовать руками.

всё сделал... vid pid передаётся в дескрипторе устройства... устройство определилось... но только я не понимаю как мне передать к примеру 2 байта в хост?...

1. выбираю конечную точку
2. устанавливаю длину буффера
3. через регистр data port кладу байты...

и всё??
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.