This is a simplified block diagram of the Oscillator module. Essentially, there are four potential clock sources:
- Primary Oscillator (POSC): Allowing a quartz crystal, resonator, or external clock signal to clock the microcontroller.
- Fast Internal RC (FRC) Oscillator: Allowing a crystal-less operation to save space.
- Low Power RC Oscillator (LPRC): Mainly for clocking the Watchdog time and Power-On Reset timer.
- Secondary Oscillator (SOSC): Primarily for the Timer 1, 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 80 MHz.
The PLL can be used with both the POSC and FRC. 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, 4 MHz – 31 kHz).
On devices with a USB interface, there is a separate USB PLL block to provide the 48 MHz 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 POSC via the USB PLL.