Power Management Controller (PMC) driver for SAM. More...
#include "compiler.h"

Go to the source code of this file.
Macros | |
| #define | CKGR_MOR_KEY_PASSWD CKGR_MOR_KEY(0x37U) | 
| #define | PMC_FAST_STARTUP_Msk (0x7FFFFu) | 
| #define | PMC_MASK_STATUS0 (0xFFFFFFFC) | 
| #define | PMC_MASK_STATUS1 (0xFFFFFFFF) | 
| #define | PMC_OSC_BYPASS 1 | 
| #define | PMC_OSC_XTAL 0 | 
| #define | PMC_PCK_0 0 /* PCK0 ID */ | 
| #define | PMC_PCK_1 1 /* PCK1 ID */ | 
| #define | PMC_PCK_2 2 /* PCK2 ID */ | 
| #define | PMC_TIMEOUT (2048) | 
| #define | pmc_us_to_moscxtst(startup_us, slowck_freq) | 
| #define | PMC_WPMR_WPKEY_PASSWD PMC_WPMR_WPKEY((uint32_t) 0x504D43) | 
| #define | SUPC_CR_KEY_PASSWD SUPC_CR_KEY(0xA5U) | 
| #define | SUPC_MR_KEY_PASSWD SUPC_MR_KEY(0xA5U) | 
Functions | |
Master clock (MCK) Source and Prescaler configuration  | |
  | |
| void | pmc_mck_set_prescaler (uint32_t ul_pres) | 
| Set the prescaler of the MCK.  More... | |
| void | pmc_mck_set_source (uint32_t ul_source) | 
| Set the source of the MCK.  More... | |
| uint32_t | pmc_switch_mck_to_sclk (uint32_t ul_pres) | 
| Switch master clock source selection to slow clock.  More... | |
| uint32_t | pmc_switch_mck_to_mainck (uint32_t ul_pres) | 
| Switch master clock source selection to main clock.  More... | |
| uint32_t | pmc_switch_mck_to_pllack (uint32_t ul_pres) | 
| Switch master clock source selection to PLLA clock.  More... | |
Slow clock (SLCK) oscillator and configuration  | |
| void | pmc_switch_sclk_to_32kxtal (uint32_t ul_bypass) | 
| Switch slow clock source selection to external 32k (Xtal or Bypass).  More... | |
| uint32_t | pmc_osc_is_ready_32kxtal (void) | 
| Check if the external 32k Xtal is ready.  More... | |
Main Clock (MAINCK) oscillator and configuration  | |
| void | pmc_switch_mainck_to_fastrc (uint32_t ul_moscrcf) | 
| Switch main clock source selection to internal fast RC.  More... | |
| void | pmc_osc_enable_fastrc (uint32_t ul_rc) | 
| Enable fast RC oscillator.  More... | |
| void | pmc_osc_disable_fastrc (void) | 
| Disable the internal fast RC.  More... | |
| uint32_t | pmc_osc_is_ready_fastrc (void) | 
| Check if the main fastrc is ready.  More... | |
| void | pmc_osc_enable_main_xtal (uint32_t ul_xtal_startup_time) | 
| Enable main XTAL oscillator.  More... | |
| void | pmc_osc_bypass_main_xtal (void) | 
| Bypass main XTAL.  More... | |
| void | pmc_osc_disable_main_xtal (void) | 
| Disable the main Xtal.  More... | |
| uint32_t | pmc_osc_is_bypassed_main_xtal (void) | 
| Check if the main crystal is bypassed.  More... | |
| uint32_t | pmc_osc_is_ready_main_xtal (void) | 
| Check if the main crystal is ready.  More... | |
| void | pmc_switch_mainck_to_xtal (uint32_t ul_bypass, uint32_t ul_xtal_startup_time) | 
| Switch main clock source selection to external Xtal/Bypass.  More... | |
| void | pmc_osc_disable_xtal (uint32_t ul_bypass) | 
| Disable the external Xtal.  More... | |
| uint32_t | pmc_osc_is_ready_mainck (void) | 
| Check if the MAINCK is ready. Depending on MOSCEL, MAINCK can be one of Xtal, bypass or internal RC.  More... | |
| void | pmc_mainck_osc_select (uint32_t ul_xtal_rc) | 
| Select Main Crystal or internal RC as main clock source.  More... | |
PLL oscillator and configuration  | |
| void | pmc_enable_pllack (uint32_t mula, uint32_t pllacount, uint32_t diva) | 
| Enable PLLA clock.  More... | |
| void | pmc_disable_pllack (void) | 
| Disable PLLA clock.  More... | |
| uint32_t | pmc_is_locked_pllack (void) | 
| Is PLLA locked?  More... | |
Peripherals clock configuration  | |
| uint32_t | pmc_enable_periph_clk (uint32_t ul_id) | 
| Enable the specified peripheral clock.  More... | |
| uint32_t | pmc_disable_periph_clk (uint32_t ul_id) | 
| Disable the specified peripheral clock.  More... | |
| void | pmc_enable_all_periph_clk (void) | 
| Enable all peripheral clocks.  More... | |
| void | pmc_disable_all_periph_clk (void) | 
| Disable all peripheral clocks.  More... | |
| uint32_t | pmc_is_periph_clk_enabled (uint32_t ul_id) | 
| Check if the specified peripheral clock is enabled.  More... | |
Programmable clock Source and Prescaler configuration  | |
The following functions may be used to select the clock source and prescaler for the specified programmable clock.  | |
| void | pmc_pck_set_prescaler (uint32_t ul_id, uint32_t ul_pres) | 
| Set the prescaler for the specified programmable clock.  More... | |
| void | pmc_pck_set_source (uint32_t ul_id, uint32_t ul_source) | 
| Set the source oscillator for the specified programmable clock.  More... | |
| uint32_t | pmc_switch_pck_to_sclk (uint32_t ul_id, uint32_t ul_pres) | 
| Switch programmable clock source selection to slow clock.  More... | |
| uint32_t | pmc_switch_pck_to_mainck (uint32_t ul_id, uint32_t ul_pres) | 
| Switch programmable clock source selection to main clock.  More... | |
| uint32_t | pmc_switch_pck_to_pllack (uint32_t ul_id, uint32_t ul_pres) | 
| Switch programmable clock source selection to PLLA clock.  More... | |
| uint32_t | pmc_switch_pck_to_mck (uint32_t ul_id, uint32_t ul_pres) | 
| Switch programmable clock source selection to mck.  More... | |
| void | pmc_enable_pck (uint32_t ul_id) | 
| Enable the specified programmable clock.  More... | |
| void | pmc_disable_pck (uint32_t ul_id) | 
| Disable the specified programmable clock.  More... | |
| void | pmc_enable_all_pck (void) | 
| Enable all programmable clocks.  More... | |
| void | pmc_disable_all_pck (void) | 
| Disable all programmable clocks.  More... | |
| uint32_t | pmc_is_pck_enabled (uint32_t ul_id) | 
| Check if the specified programmable clock is enabled.  More... | |
Interrupt and status management  | |
| void | pmc_enable_interrupt (uint32_t ul_sources) | 
| Enable PMC interrupts.  More... | |
| void | pmc_disable_interrupt (uint32_t ul_sources) | 
| Disable PMC interrupts.  More... | |
| uint32_t | pmc_get_interrupt_mask (void) | 
| Get PMC interrupt mask.  More... | |
| uint32_t | pmc_get_status (void) | 
| Get current status.  More... | |
Power management  | |
The following functions are used to configure sleep mode and additional wake up inputs.  | |
| void | pmc_set_fast_startup_input (uint32_t ul_inputs) | 
| Set the wake-up inputs for fast startup mode registers (event generation).  More... | |
| void | pmc_clr_fast_startup_input (uint32_t ul_inputs) | 
| Clear the wake-up inputs for fast startup mode registers (remove event generation).  More... | |
| void | pmc_enable_sleepmode (uint8_t uc_type) | 
| Enable Sleep Mode. Enter condition: (WFE or WFI) + (SLEEPDEEP bit = 0) + (LPM bit = 0)  More... | |
| void | pmc_enable_waitmode (void) | 
| Enable Wait Mode. Enter condition: WFE + (SLEEPDEEP bit = 0) + (LPM bit = 1)  More... | |
| void | pmc_enable_backupmode (void) | 
| Enable Backup Mode. Enter condition: WFE/(VROFF bit = 1) + (SLEEPDEEP bit = 1)  More... | |
Failure detector  | |
| void | pmc_enable_clock_failure_detector (void) | 
| Enable Clock Failure Detector.  More... | |
| void | pmc_disable_clock_failure_detector (void) | 
| Disable Clock Failure Detector.  More... | |
Write protection  | |
| void | pmc_set_writeprotect (uint32_t ul_enable) | 
| Enable or disable write protect of PMC registers.  More... | |
| uint32_t | pmc_get_writeprotect_status (void) | 
| Return write protect status.  More... | |
Power Management Controller (PMC) driver for SAM.
Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.
Definition in file drivers/pmc/pmc.h.
| #define CKGR_MOR_KEY_PASSWD CKGR_MOR_KEY(0x37U) | 
Key to unlock CKGR_MOR register
Definition at line 65 of file drivers/pmc/pmc.h.
| #define PMC_FAST_STARTUP_Msk (0x7FFFFu) | 
Mask to access fast startup input
Definition at line 78 of file drivers/pmc/pmc.h.
| #define PMC_MASK_STATUS0 (0xFFFFFFFC) | 
Bit mask for peripheral clocks (PCER0)
Definition at line 51 of file drivers/pmc/pmc.h.
| #define PMC_MASK_STATUS1 (0xFFFFFFFF) | 
Bit mask for peripheral clocks (PCER1)
Definition at line 54 of file drivers/pmc/pmc.h.
| #define PMC_OSC_BYPASS 1 | 
Oscillator in bypass mode
Definition at line 89 of file drivers/pmc/pmc.h.
| #define PMC_OSC_XTAL 0 | 
Using external oscillator
Definition at line 86 of file drivers/pmc/pmc.h.
| #define PMC_PCK_0 0 /* PCK0 ID */ | 
Definition at line 91 of file drivers/pmc/pmc.h.
| #define PMC_PCK_1 1 /* PCK1 ID */ | 
Definition at line 92 of file drivers/pmc/pmc.h.
| #define PMC_PCK_2 2 /* PCK2 ID */ | 
Definition at line 93 of file drivers/pmc/pmc.h.
| #define PMC_TIMEOUT (2048) | 
Loop counter timeout value
Definition at line 58 of file drivers/pmc/pmc.h.
| #define pmc_us_to_moscxtst | ( | startup_us, | |
| slowck_freq | |||
| ) | 
Convert startup time from us to MOSCXTST
Definition at line 112 of file drivers/pmc/pmc.h.
| #define PMC_WPMR_WPKEY_PASSWD PMC_WPMR_WPKEY((uint32_t) 0x504D43) | 
PMC_WPMR Write Protect KEY, unlock it
Definition at line 82 of file drivers/pmc/pmc.h.
| #define SUPC_CR_KEY_PASSWD SUPC_CR_KEY(0xA5U) | 
Key used to write SUPC registers
Definition at line 70 of file drivers/pmc/pmc.h.
| #define SUPC_MR_KEY_PASSWD SUPC_MR_KEY(0xA5U) | 
Definition at line 74 of file drivers/pmc/pmc.h.