[an error occurred while processing this directive]
|
Ни в какую не приходит пакет 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);
}
E-mail: info@telesys.ru