Jump to content

    
Sign in to follow this  
nagserg

ISP1581+atmega128

Recommended Posts

ISP1581 прицепил к atmega128, которая работает на 16 МГц.

Последовательность действий такая:

 

После подачи питания делаю задержку в 3 секунды, потом инициализирую

 

Mode регистр (SOFTCT+GLINTENA+CLKAON+WKUPCS),

 

Interrupt Configuration (0x54),

 

Interrupt Enable (IEBRST+IESUSP+IERESM+IEHS_STA),

 

Interrupt Enable+1 (IEP0SETUP+IEP0TX+IEP0RX),

 

USB_WR(Address,DEVEN)

 

после этого возникает прерывание и выставляется регистре interrupt

флаг SUSP, затем через некоторое время BRESET и HS_STAT. Не

могу добится, чтобы возникло прерывание setup.

 

Подскажите пожалуйста, кто знает что я не так делаю? Может команду какую пропускаю.

Share this post


Link to post
Share on other sites

У меня работает примерно так:

 

UWRITE_BYTE_C(MODE, 0x80); //

UWRITE_BYTE_C(MODE, 0x90); // Asynch. reset

while (delay--){ // Delay

}

 

UWRITE_BYTE_C(IEINT, 0x71);

UWRITE_BYTE_C(IEINT+1, 0x0D); // Enable BRESET INT

 

UWRITE_BYTE_C(EPINDEX, 0x20); // Select EP0SETUP

UWRITE_BYTE_C(EPTYPE, 0x08); // Enable EP0SETUP

 

UWRITE_BYTE_C(EPINDEX, 0x00); // Select EP0 Out

UWRITE_BYTE_C(EPTYPE, 0x08); // Enable EP0SETUP

 

UWRITE_BYTE_C(EPINDEX, 0x01); // Select EP0 In

UWRITE_BYTE_C(EPTYPE, 0x08); // Enable EP0SETUP

 

UWRITE_BYTE_C(FADDR, 0x80); // Enable Device And Reset Device Address

 

UWRITE_BYTE_C(MODE, 0x89); // Enable Global Interrupt

// Enable connect 1.5 KOm

Share this post


Link to post
Share on other sites

Не могу записать прочитать в из конечной точки (использую 2-ю на передачу и 2-ю на прием)

 

У меня вот так сконфигурированы конечные точки:

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//выбрана 2-ая out конечная точка

D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000; //FIFO=64bytes

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;////выбрана 2-ая in конечная точка

D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//

D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE = 0x0600; // Bulk, Double buffering

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;//

D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE = 0x0600; // Bulk, Double buffering

 

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//

D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE |= 0x0800; //enable FIFO

 

 

D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;//

D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE |= 0x0800; //enable FIFO

 

потом D14_Cntrl_Reg->D14_ADDRESS.VALUE = 0x80;// logic 1 enables the device.

 

После прочтения дескриптора комп дает команду set configuration, после которого можно передавать и принимать с конечных точек, если они конечно разрешены. Вот у меня не получается, хотя в 0-ю конечную точку получается передавать и получать из нее данные.

 

Подскажите кто-нибудь пожалуйста, после передачи дескриптора что нужно сделать, чтобы конечные точки были доступны?

Share this post


Link to post
Share on other sites

Вроде все так. Странно.

Может дело в том, что ты это делаешь не тогда, когда нужно.

 

Установку адреса (фактически разрешение работы) я делаю когда приходит

SET_ADDRESS device request.

Программирование параметров (установка типа конечной точки и ее разрешение) - когда приходит запрос SET_CONFIGURATION device request.

 

Небольшая рекомендация. В качестве исходного материала я использовал исходники firmware для процессора Cygnal 8051F320. Исходники на С, все неплохо структурировано. Рекомендую. Исходники доступны в качестве AppNotes, www.cygnal.com

Share this post


Link to post
Share on other sites

В данный момент заработало, а ошибка была в том, что у меня было вот так:

 

D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000; , а надо было

 

D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x0040; т.е. поменять старший/младший байт местами :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this