Gast
#636679
Hallo, Wir sitzen seit Stunden vor dem Problem der Initialisierung des AT90USB162. Wir haben uns bei der init-Reihenfolge des USB interfaces an die Reihenfolge im Datenblatt gehalten (s. 191 Datenblatt) an dem Punkt "Configure USB interface (USB Endpoint 0 configuration)" frage wir das CFGOK ab, ob es gesetzt ist vgl (s. 193 Datenblatt) und dort bleibt der Controller hängen, alle zuvorigen Schritte werden erfolgreich durchgeführt. Nachfolgende hab ich den Code für den schritt "Configure USB interface (USB Endpoint 0 configuration)" angehängt ... ich hoffe es kann mir einer helfen warum das das Bit nicht gesetzt wird. Lg Stefan p.s. die Funktion initDEVICE wird in der MAIN aufgerufen um die komplette init durchzuführen. /* ******************************************** */ /* initPLL */ /* ******************************************** */ void initPLL (void) { PLLCSR |= (1 << PLLP0) | (1 << PLLE); // Set preescaleler to 2 for 8MHz CLK while( !(PLLCSR & (1 << PLOCK)) ); // wait until PLL is locked } /* ******************************************** */ /* initUSB */ /* ******************************************** */ void initUSB (void) { USBCON |= (1 << USBE); // enable USB; USBCON &= (0 << FRZCLK); // enable extern CLK } /* ******************************************** */ /* initEP0 */ /* ******************************************** */ void initEP0 (void) { //UENUM = 0x00 is defaultsetting for EP0 UECONX |= (1 << EPEN); //UECFG0X = 0x00 is control mode (default) UECFG1X |= (1 << EPSIZE1) | (1 << EPSIZE0) | (1 << ALLOC); while ( !(UESTA0X & (1 << CFGOK))) { PORTB |= 0x40; } } /* ******************************************** */ /* initDEVICE */ /* ******************************************** */ void initDEVICE (void) { initPLL(); initUSB(); initEP0(); }