Upon analyzing the contents of Usb.Init(), it was discovered that in the reset() function of usbhost.h, the bmOSCOKIRQ bit of the USBIRQ register does not get set. The USBCTL register is set with bmCHIPRES to reset, and then reset is cleared with 0x00. Normally, this should lead to the PLL starting, stabilizing, and then setting the bmOSCOKIRQ bit of the USBIRQ register, but it seems not to happen. Even after increasing the wait time for oscillator stabilization, the bmOSCOKIRQ never gets set. What could be the reason for bmOSCOKIRQ not getting set?
/* reset MAX3421E. Returns number of cycles it took for PLL to stabilize after reset
or zero if PLL haven't stabilized in 65535 cycles */
template< typename SPI_SS, typename INTR >
uint16_t MAX3421e< SPI_SS, INTR >::reset() {
uint16_t i = 0;
regWr(rUSBCTL, bmCHIPRES);
regWr(rUSBCTL, 0x00);
while(++i) {
if((regRd(rUSBIRQ) & bmOSCOKIRQ)) {
break;
}
}
return ( i);
}