ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
238047
vovanadze (10.02.2011 10:29 - 10:42, просмотров: 2310)
Добрый день товарищи! Возникла проблема с USB контроллера AT90USB1287, работает только в девайс-режиме. Не проходит инициализация - нет никаких прерываний, end of reset в том числе. Только v-bus прерывание происходит. Интересует только инициализация, ч 

Добрый день товарищи! Возникла проблема с USB контроллера AT90USB1287, работает только в девайс-режиме. Не проходит инициализация - нет никаких прерываний, end of reset в том числе. Только v-bus прерывание происходит. Интересует только инициализация, чтобы прерывания происходили. Помогите найти ошибку пожалуйста! Читал тему аналогичную тут же "at90usb1287 не распознается хостом", вроде, лопатил пример тот..на ассемблере. Вообщем толи лыжи не едут.... Вот код функции инициализации юсб:  

void usb_start_device (void) { USBCON = USBCON & 0b01111111; //выкл. USB UHWCON = UHWCON | 0b00000001; //Power ON USB delay_ms(15); //ждем 15 мс //конфигурируем PLL PLLCSR = 0b00010110; pll_start(); wait_pll_ready(); UHWCON = UHWCON | 0b10000000; //set device mode UHWCON = UHWCON & 0b10101111; // USBCON = USBCON | 0b00010000; USBCON = USBCON | 0b10100000; //Enable OTG, Enable USB and Disable Clock... unfreeze_clk(); //запускаем тг USB //FULL SPEED mode UDADDR = 0; //Reset address UDIEN = 0; }

И кусок в main'e:

usb_start_device(); //инициализация USB UDIEN = 0b01111101; //прерывания - только "end of reset" - КОТОРОГО НЕ ПРОИСХОДИТ! init_ep0(); while (!(USBSTA & 0b00000001)==1) { }; //wait for vbus connect #asm("sei"); //SREG = SREG | 0b10000000; usb_attach(); // Usb_enable_suspend_interrupt(); Usb_enable_reset_interrupt();