Эдуард1978 (08.06.2015 12:31, просмотров: 6584)
Всем привет! После инициализации USB микроконтроллера at90usb647 не приходят SETUP пакеты Windovs пишет неизвестное устройство вот часть кода при инициализации и при сбросе на шине что то не так помогите плиз void InitUSB () инициализация
{
UHWCON =(1<<UVREGE)|(1<<UIMOD);// вкл встроенный стабилизатор и выбран режим devis
// UDIEN=0;
UDINT=0;
_delay_ms(15);
PLLCSR=0x16;
while ((PLLCSR & 1)==0);// насторойка прескаллера на 48 мегагерц
// UEIENX=0;
USBCON=0x90; / /включили модуль USB USBCON=(1<<USBE)|(1<<OTGPADE);
USBCON=0x90;//USBCON&=~((1<<HOST)|(1<<FRZCLK));
// Endpoint 0 selected
UENUM=0;
// Device endpoint registers initialization
// Endpoint 0: On
UECONX=0x01;
UECFG0X=0x00;
// Endpoint X size: 8
// Endpoint X Banks: 1
//ALLOC ON
UECFG1X=0x30;
UECFG1X|=(1<<ALLOC); назначили память USB
while(!(UESTA0X&(1<<CFGOK)));// Endpoint X configuration: Control, OUT
UDCON&=~((1<<LSM)|(1<<DETACH)); подключились к шине
USB_curr_config=0;
USB_USWSTAT=POWERED_STATE;// ; default to powered state
USB_device_status=1;//, BANKED
USB_dev_req=NO_REQUEST;//, BANKED ; No device requests in process
//bufferusb[9]={0x30};
}
void USBReset () //фунция настройки конторльной точки при сбросе на шине
{
UDADDR = 0;
USB_address_pending=0;
UERST=0xff;
UERST=0;
// USBCON=(1<<USBE)|(1<<OTGPADE);
UDINT=0;
USBCON=0x90;
USBCON=0x90;
// Endpoint 0 selected
UENUM=0;
// Device endpoint registers initialization
// Endpoint 0: On
//UECONX=0x00;
UECONX=0x01;
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));
UDCON=0;
index1=0;
USB_curr_config=0;
USB_device_status=1;
USB_USWSTAT=DEFAULT_STATE;
//bufferusb[10]={0x31};
// UEINTX=0;
}