atmega32u4-16mu ATMEL Corporation, atmega32u4-16mu Datasheet - Page 34

no-image

atmega32u4-16mu

Manufacturer Part Number
atmega32u4-16mu
Description
Atmega32u4 8-bit Avr Microcontroller With 32k Bytes Of Isp Flash And Usb Controller
Manufacturer
ATMEL Corporation
Datasheet
Clock switch
Algorithm
Switch from external
clock to RC clock
Switch from RC clock to
external clock
Clock Selection
Register 0 – CLKSEL0
34
USB
CPU Clock
External
Oscillator
RC oscillator
ATmega32U4
non-Idle
Figure 2. Example of clock switching with wake-up from Device
Bit
Read/Write
Initial Value
if (Usb_suspend_detected())
{
}
if (Usb_wake_up_detected())
{
}
Ext
Usb_ack_suspend();
Usb_freeze_clock();
Disable_pll();
Enable_RC_clock();
while (!RC_clock_ready());
Select_RC_clock();
Disable_external_clock();
Usb_ack_wake_up();
Enable_external_clock();
while (!External_clock_ready()); // while (CLKSTA.EXTON != 1);
Select_external_clock();
Enable_pll();
Disable_RC_clock();
while (!Pll_ready());
Usb_unfreeze_clock();
3m
Idle
s
7
RCSUT1
R/W
0
6
RCSUT0
R/W
0
5
EXSUT1
R/W
0
w atchdog wake-up
from power-down
4
EXSUT0
R/W
0
(Suspend)
2 Upstream Resume from device
RC
// if (UDINT.SUSPI == 1)
// UDINT.SUSPI = 0;
// USBCON.FRZCLK = 1;
// PLLCSR.PLLE = 0;
// CLKSEL0.RCE = 1;
// while (CLKSTA.RCON != 1);
// CLKSEL0.CLKS = 0;
// CLKSEL0.EXTE = 0;
// if (UDINT.WAKEUPI == 1)
// UDINT.WAKEUPI = 0;
// CKSEL0.EXTE = 1;
// CLKSEL0.CLKS = 1;
// PLLCSR.PLLE = 1;
// CLKSEL0.RCE = 0;
// while (PLLCSR.PLOCK != 1);
// USBCON.FRZCLK = 0;
3
RCE
R/W
See Bit Description
2
R/W
EXTE
1
-
R
upstream-resume
0
CLKS
R/W
2
7766A–AVR–03/08
CLKSEL0
non-Idle
Ext

Related parts for atmega32u4-16mu