Microchip® Advanced Software Framework

uc3l/osc.h File Reference

Chip-specific oscillator management functions.

Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries.

#include <board.h>
#include <stdbool.h>
#include <stdint.h>
#include <avr32/io.h>

Macros

#define AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_AGC   0x00000001
 
#define AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_NO_AGC   0x00000004
 
#define AVR32_SCIF_OSCCTRL32_MODE_EXT_CLOCK   0x00000000
 
#define OSC0_MODE_VALUE   UNDEFINED
 Board-dependent value written to the MODE bitfield of PM_OSCCTRL(0) More...
 
#define OSC0_STARTUP_TIMEOUT   UNDEFINED
 Number of slow clock cycles to wait for OSC0 to start. More...
 
#define OSC0_STARTUP_VALUE   UNDEFINED
 Board-dependent value written to the STARTUP bitfield of PM_OSCCTRL(0) More...
 
#define OSC32_MODE_VALUE   UNDEFINED
 
#define OSC32_STARTUP_TIMEOUT   UNDEFINED
 
#define OSC32_STARTUP_VALUE   UNDEFINED
 
Oscillator identifiers
#define OSC_ID_OSC0   0
 External Oscillator 0. More...
 
#define OSC_ID_OSC32   1
 External 32 kHz oscillator. More...
 
#define OSC_ID_RC32K   2
 Internal 32 kHz RC oscillator. More...
 
#define OSC_ID_RC120M   3
 Internal 120 MHz RC oscillator. More...
 
#define OSC_ID_RCSYS   4
 Internal System RC oscillator. More...
 
OSC0 mode values
#define OSC_MODE_EXTERNAL   AVR32_SCIF_OSCCTRL0_MODE_EXT_CLOCK
 External clock connected to XIN. More...
 
#define OSC_MODE_XTAL   AVR32_SCIF_OSCCTRL0_MODE_CRYSTAL
 Crystal connected to XIN/XOUT. More...
 
OSC32 mode values
#define OSC32_MODE_EXTERNAL   AVR32_SCIF_OSCCTRL32_MODE_EXT_CLOCK
 External clock connected to XIN32. More...
 
#define OSC32_MODE_XTAL   AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_AGC
 Crystal connected to XIN32/XOUT32. More...
 
#define OSC32_MODE_XTAL_HC   AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_NO_AGC
 Crystal connected to XIN32/XOUT32 in high current mode. More...
 
OSC0 startup values
#define OSC_STARTUP_0   AVR32_SCIF_OSCCTRL0_STARTUP_0_RCOSC
 0 cycles More...
 
#define OSC_STARTUP_64   AVR32_SCIF_OSCCTRL0_STARTUP_64_RCOSC
 64 cycles (560 us) More...
 
#define OSC_STARTUP_128   AVR32_SCIF_OSCCTRL0_STARTUP_128_RCOSC
 128 cycles (1.1 ms) More...
 
#define OSC_STARTUP_2048   AVR32_SCIF_OSCCTRL0_STARTUP_2048_RCOSC
 2048 cycles (18 ms) More...
 
#define OSC_STARTUP_4096   AVR32_SCIF_OSCCTRL0_STARTUP_4096_RCOSC
 4096 cycles (36 ms) More...
 
#define OSC_STARTUP_8192   AVR32_SCIF_OSCCTRL0_STARTUP_8192_RCOSC
 8192 cycles (71 ms) More...
 
#define OSC_STARTUP_16384   AVR32_SCIF_OSCCTRL0_STARTUP_16384_RCOSC
 16384 cycles (142 ms) More...
 
OSC32 startup values
#define OSC32_STARTUP_0   AVR32_SCIF_OSCCTRL32_STARTUP_0_RCOSC
 0 cycles More...
 
#define OSC32_STARTUP_128   AVR32_SCIF_OSCCTRL32_STARTUP_128_RCOSC
 128 cycles (1.1 ms) More...
 
#define OSC32_STARTUP_8192   AVR32_SCIF_OSCCTRL32_STARTUP_8192_RCOSC
 8192 cycles (72.3 ms) More...
 
#define OSC32_STARTUP_16384   AVR32_SCIF_OSCCTRL32_STARTUP_16384_RCOSC
 16384 cycles (143 ms) More...
 
#define OSC32_STARTUP_65536   AVR32_SCIF_OSCCTRL32_STARTUP_65536_RCOSC
 65536 cycles (570 ms) More...
 
#define OSC32_STARTUP_131072   AVR32_SCIF_OSCCTRL32_STARTUP_131072_RCOSC
 131072 cycles (1.1 s) More...
 
#define OSC32_STARTUP_262144   AVR32_SCIF_OSCCTRL32_STARTUP_262144_RCOSC
 262144 cycles (2.3 s) More...
 
#define OSC32_STARTUP_524288   AVR32_SCIF_OSCCTRL32_STARTUP_524288_RCOSC
 524288 cycles (4.6 s) More...
 
Board-specific configuration parameters

The following definitions must be provided by the board code for all working oscillators on the board.

#define BOARD_OSC32_PINSEL   0
 If set to 1, use XIN32_2/XOUT32_2 pins for OSC32. More...
 
RC oscillator frequency limits

The frequency of the internal RC oscillators may drift a bit as a result of temperature changes.

These definitions provide upper and lower limits which may be used to calculate upper and lower limits of timeouts, derived clock frequencies, etc.

#define OSC_RCSYS_NOMINAL_HZ   115000
 Nominal frequency of RCSYS in Hz. More...
 
#define OSC_RCSYS_MIN_HZ   100000
 Minimum frequency of RCSYS in Hz. More...
 
#define OSC_RCSYS_MAX_HZ   120000
 Maximum frequency of RCSYS in Hz. More...
 
#define OSC_RC32K_NOMINAL_HZ   32000
 Nominal frequency of RC32K in Hz. More...
 
#define OSC_RC32K_MIN_HZ   20000
 Minimum frequency of RC32K in Hz. More...
 
#define OSC_RC32K_MAX_HZ   44000
 Maximum frequency of RC32K in Hz. More...
 
#define OSC_RC120M_NOMINAL_HZ   120000000
 Nominal frequency of RC120M in Hz. More...
 

Functions

void osc_priv_disable_osc0 (void)
 
void osc_priv_disable_osc32 (void)
 
void osc_priv_disable_rc120m (void)
 
void osc_priv_disable_rc32k (void)
 
void osc_priv_enable_osc0 (void)
 
void osc_priv_enable_osc32 (void)
 
void osc_priv_enable_rc120m (void)
 
void osc_priv_enable_rc32k (void)
 
Oscillator Management
static void osc_enable (uint8_t id)
 Enable oscillator id. More...
 
static void osc_disable (uint8_t id)
 Disable oscillator id. More...
 
static bool osc_is_ready (uint8_t id)
 Determine whether oscillator id is ready. More...
 
static uint32_t osc_get_rate (uint8_t id)
 Return the frequency of oscillator id in Hz. More...
 

#define AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_AGC   0x00000001
#define AVR32_SCIF_OSCCTRL32_MODE_CRYSTAL_NO_AGC   0x00000004
#define AVR32_SCIF_OSCCTRL32_MODE_EXT_CLOCK   0x00000000