ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
194425 Топик полностью
Гудвин, волшебник (17.05.2010 18:11, просмотров: 227) ответил =MIV= на Кстати Вы на 17хх заводили HC ??? Ничего не напутали ? :)
Дык вот передо мной на столе... LPC1758. Работает... Вот процедурка прерывания (она полностью из примера) void USB_IRQHandler (void) { USB_INT32U int_status; USB_INT32U ie_status; int_status = USB->HcInterruptStatus; /* Read Interrupt Status */ ie_status = USB->HcInterruptEnable; /* Read Interrupt enable status */ if (!(int_status & ie_status)) { return; } else { int_status = int_status & ie_status; if (int_status & OR_INTR_STATUS_RHSC) { /* Root hub status change interrupt */ if (USB->HcRhPortStatus1 & OR_RH_PORT_CSC) { if (USB->HcRhStatus & OR_RH_STATUS_DRWE) { /* * When DRWE is on, Connect Status Change * means a remote wakeup event. */ HOST_RhscIntr = 1;// JUST SOMETHING FOR A BREAKPOINT } else { /* * When DRWE is off, Connect Status Change * is NOT a remote wakeup event */ if (USB->HcRhPortStatus1 & OR_RH_PORT_CCS) { if (!gUSBConnected) { HOST_TDControlStatus = 0; HOST_WdhIntr = 0; HOST_RhscIntr = 1; gUSBConnected = 1; } else PRINT_Log("Spurious status change (connected)?\n"); } else { if (gUSBConnected) { USB->HcInterruptEnable = 0; // why do we get multiple disc. rupts??? HOST_RhscIntr = 0; gUSBConnected = 0; } else PRINT_Log("Spurious status change (disconnected)?\n"); } } USB->HcRhPortStatus1 = OR_RH_PORT_CSC; } if (USB->HcRhPortStatus1 & OR_RH_PORT_PRSC) { USB->HcRhPortStatus1 = OR_RH_PORT_PRSC; } } if (int_status & OR_INTR_STATUS_WDH) { /* Writeback Done Head interrupt */ HOST_WdhIntr = 1; HOST_TDControlStatus = (TDHead->Control >> 28) & 0xf; } USB->HcInterruptStatus = int_status; /* Clear interrupt status register */ } return; } "gUSBConnected" взводится в прерывании...