Datasheet
35
7766F–AVR–11/10
ATmega16/32U4
Figure 6-4. Example of clock switching with wake-up from USB Host
Figure 6-5. Example of clock switching with wake-up from Device
6.8 Clock switch Algorithm
6.8.1 Switch from external clock to RC clock
if (Usb_suspend_detected()) // if (UDINT.SUSPI == 1)
{
Usb_ack_suspend(); // UDINT.SUSPI = 0;
Usb_freeze_clock(); // USBCON.FRZCLK = 1;
Disable_pll(); // PLLCSR.PLLE = 0;
Enable_RC_clock(); // CLKSEL0.RCE = 1;
while (!RC_clock_ready()); // while (CLKSTA.RCON != 1);
Select_RC_clock(); // CLKSEL0.CLKS = 0;
Disable_external_clock(); // CLKSEL0.EXTE = 0;
}
USB
CPU Clock
Extern al
Oscillator
RC oscillator
Ext RC Ext
non-Idle Idle
(Suspend)
non-Idle
3m
s
resume
1
1
Resume from Host
w atchdog wake-up
from power-down
USB
CPU Clock
Extern al
Oscillator
RC oscillator
Ext RC Ext
non-Idle Idle
(Suspend)
non-Idle
3m
s
upstream-resume
2
2 Upstream Resume from device
w atchdog wake-up
from power-down