Всем привет!
Помогите пожалуйста как правильно инициализировать at90usb647 в режим хоста .
Согласно даташиту для осуществления сброса шины USB (USB_RESET) надо установить бит RESET регистра UHCON (UHCON |= (1<<RESET));, но
ничего не происходит .Хотя если сигнальные пины подключаемого устройства коротнуть на 0 тем самым имитируя сброс шины то подключаемое usb устройство сбрасывается . Может быть надо еще какие нибудь регистры настроить . Вот мой вариант инициализации:
void inytHost()
{
UHWCON |= (1<<UIDE) | (1<<UVREGE); // это надо если нужно включить регулятор напряжения для USB модуля
_delay_ms(15);
PLLCSR |= (1<<PLLP2) | (1<<PLLP1) |(0<<PLLP0)| (1<<PLLE);
while ((PLLCSR & 1)==0);
UDCON&=~(1<<DETACH);
USBCON |= (1<<USBE) |(1<<HOST)|(1<<OTGPADE);
USBCON&=~(1<<FRZCLK);
USBCON |= (1<<HOST);
UPNUM=0;
UECONX=0x00;
UPCONX|=0x01;
UPCFG0X|=0x00;
//ALLOC ON
UPCFG1X|=0x30;
UPCFG1X|=(1<<ALLOC);
while(!(UPSTAX&(1<<CFGOK)));
//UDCON&=~((1<<LSM)|(1<<DETACH));
//OTGCON=0x04;
//PORTE|=(1<<7);
}
int main (void)
{
CLKPR=0x80;
CLKPR=0x00;
PORTC=0x00;
DDRC=0xff;
DDRE=(1<<7);
PORTD=0x00;
DDRD=0xFF;
inyt();
void inytHost();
OTGCON|=(1<<VBUSHWC);
PORTE|=(1<<7); подаем на шину напряжение
while (1) {
UHCON|=(1<<RESET); //// сброс шины
OLCD(OTGINT,0);/// сдесь выводится значение регистров на дисплей
OLCD(UHINT ,1);
OLCD(UHCON,2);
OLCD(UPCONX ,3);
OLCD(UDCON ,4);
OLCD(UPINT ,5);
OLCD(UPINT,6);
OLCD(OTGTCON,7);
OLCD(UPINTX ,8);
display();
}
хотя бы для начала добиться сброса шины USB
}