После включения USB интерфейса на микроконтроллере
AT90USB647 и при повторном конфигурировании контрольной точки по сбросу шины , не приходит пакет SETUP то есть в регистре UEINTX не устанавливается бит RXSTPI вот фрагмент кода :
в чем ошибка инициализации ?
==========================================
void InitUSB ()// функция ключения модуля usb
{
UHWCON =(1‹‹UIMOD)|(1‹‹UVREGE);//выбор режима устройство и вкл стабилизатор напряжения
PLLCSR=0x16;
while ((PLLCSR & 1)==0);
USBCON=(1‹‹USBE)|(1‹‹OTGPADE);// вкл модуль юсб
USBCON&=~((1‹‹HOST)|(1‹‹FRZCLK));// режим устройсво синхроницация вкл
// выбираем 0 конечную точку
UENUM=0;
// Device endpoint registers initialization
// Endpoint 0: On
UECONX=0x01;// установили EPEN в 1
UECFG0X=0x00;
// Endpoint X size: 8
// Endpoint X Banks: 1
//ALLOC ON
UECFG1X=0x30;
UECFG1X|=(1‹‹ALLOC);
while(!(UESTA0X&(1‹‹CFGOK)));// Endpoint X configuration: Control, OUT
USBCON&=~((1‹‹HOST)|(1‹‹FRZCLK));
UDCON&=~((1‹‹LSM)|(1‹‹DETACH)); // включили резюки и подключили выводы
USB_curr_config=0;
USB_USWSTAT=POWERED_STATE;// ; запитано юсб
USB_device_status=1;//, BANKED
USB_dev_req=NO_REQUEST;//, BANKED ; No device requests in process
}
void USBReset ()//функция настройки модуля usb по сбросу на шине
{
UDADDR = 0;
USB_address_pending=0;
UHWCON =(1‹‹UIMOD)|(1‹‹UVREGE);
USBCON=(1‹‹USBE)|(1‹‹OTGPADE);
USBCON&=~((1‹‹HOST)|(1‹‹FRZCLK));
// USBCON=(1‹‹USBE)|(1‹‹OTGPADE);
//UDINT=0;
// UDIEN=0;
// выбираем 0 конечную точку
UENUM=0;
// Device endpoint registers initialization
// Endpoint 0: On
//UECONX=0x00;
UECONX=0x01; //// установили EPEN в 1
UECFG0X=0x00;
// Endpoint X size: 8
// Endpoint X Banks: 1
//ALLOC ON
UECFG1X=0x30;
UECFG1X|=(1‹‹ALLOC);
while(!(UESTA0X&(1‹‹CFGOK)));// Endpoint X configuration: Control, OUT
USBCON&=~((1‹‹HOST)|(1‹‹FRZCLK));
UDCON&=~((1‹‹LSM)|(1‹‹DETACH));
USB_curr_config=0;
USB_device_status=1;
USB_USWSTAT=DEFAULT_STATE;
}