This is a very much simplified block diagram of the oscillator module. Essentially there are 4 potential clock sources as follows:
- Primary Oscillator – allowing a quartz crystal, resonator or external clock signal to clock the Microcontroller
- Fast Internal RC (FRC) oscillator – allowing crystal-less operation to save space
- Low Power Oscillator (LPRC) – mainly for clocking the Watchdog time and Power On Reset Timer
- Secondary Oscillator – primarily for the Timer 1 and Real-Time Clock and Calendar module
All sources can be used as the main clock for the CPU, and this clock source can also be directly routed or divided down to provide the peripherals with their clock. This flexibility allows the clock frequency for the CPU and peripherals to be individually matched to the application’s need (even dynamically changed during run-time), which can be very helpful in applications that need to keep a close check on power consumption. The system clock to the CPU and peripherals cannot be greater than 80MHz.
The PLL can be used with both the Primary and FRC oscillators. For further flexibility, the FRC oscillator can be divided down by 16, or by a chosen divider value in the Postscaler block (configurable from 2 to 256, that is 4MHz – 31kHz).
On devices with a USB interface, there is a separate USB PLL block to provide the 48MHz needed for USB operation. The FRC oscillator can be used as a clock source for the USB module, but *only* during USB’s suspend mode. Once woken-up, the clock has to be provided once more from the Primary Oscillator via the USB PLL.