forked from mfulz_github/qmk_firmware
Merge pull request #32 from The-42/fix-xmega-usb-prescaler
Fix XMEGA USB prescaler calculation (thanks to Bert van Hall).
This commit is contained in:
commit
89df1efcf3
|
@ -109,15 +109,25 @@ void USB_Disable(void)
|
|||
|
||||
void USB_ResetInterface(void)
|
||||
{
|
||||
uint8_t PrescalerNeeded;
|
||||
uint8_t nbit = 0;
|
||||
|
||||
#if defined(USB_DEVICE_OPT_FULLSPEED)
|
||||
if (USB_Options & USB_DEVICE_OPT_LOWSPEED)
|
||||
CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp);
|
||||
PrescalerNeeded = F_USB / 6000000;
|
||||
else
|
||||
CLK.USBCTRL = (((F_USB / 48000000) - 1) << CLK_USBPSDIV_gp);
|
||||
PrescalerNeeded = F_USB / 48000000;
|
||||
#else
|
||||
CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp);
|
||||
PrescalerNeeded = F_USB / 6000000;
|
||||
#endif
|
||||
|
||||
while (PrescalerNeeded && nbit < 7) {
|
||||
PrescalerNeeded >>= 1;
|
||||
nbit++;
|
||||
}
|
||||
|
||||
CLK.USBCTRL = (nbit - 1) << CLK_USBPSDIV_gp;
|
||||
|
||||
if (USB_Options & USB_OPT_PLLCLKSRC)
|
||||
CLK.USBCTRL |= (CLK_USBSRC_PLL_gc | CLK_USBSEN_bm);
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue