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();
}