Microchip® Advanced Software Framework

pmc.c File Reference

Power Management Controller (PMC) driver for SAM.

Copyright (c) 2011-2019 Microchip Technology Inc. and its subsidiaries.

#include "pmc.h"

Macros

#define MAX_PERIPH_ID   31
 

Functions

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_cp_clr_fast_startup_input (uint32_t ul_inputs)
 Clear the wake-up inputs of coprocessor for fast startup mode registers (remove event generation). More...
 
void pmc_cp_set_fast_startup_input (uint32_t ul_inputs)
 Set the wake-up inputs of coprocessor for fast startup mode registers (event generation). More...
 
void pmc_cpck_set_prescaler (uint32_t ul_pres)
 Set the prescaler for the Coprocessor Master Clock. More...
 
void pmc_cpck_set_source (uint32_t ul_source)
 Set the source for the Coprocessor Master Clock. More...
 
void pmc_disable_all_pck (void)
 Disable all programmable clocks. More...
 
void pmc_disable_all_periph_clk (void)
 Disable all peripheral clocks. More...
 
void pmc_disable_clock_failure_detector (void)
 Disable Clock Failure Detector. More...
 
void pmc_disable_cpbmck (void)
 Disable Coprocessor Bus Master Clocks. More...
 
void pmc_disable_cpck (void)
 Disable Coprocessor Clocks. More...
 
void pmc_disable_interrupt (uint32_t ul_sources)
 Disable PMC interrupts. More...
 
void pmc_disable_pck (uint32_t ul_id)
 Disable the specified programmable clock. More...
 
uint32_t pmc_disable_periph_clk (uint32_t ul_id)
 Disable the specified peripheral clock. More...
 
void pmc_disable_pllack (void)
 Disable PLLA clock. More...
 
void pmc_disable_pllbck (void)
 Disable PLLB clock. More...
 
void pmc_disable_sclk_osc_freq_monitor (void)
 Disable Slow Crystal Oscillator Frequency Monitoring. More...
 
uint32_t pmc_disable_sleepwalking (uint32_t ul_id)
 Disable the sleepwalking of specified peripheral. More...
 
void pmc_disable_udpck (void)
 Disable UDP (USB) clock. More...
 
void pmc_disable_upll_clock (void)
 Disable UPLL clock. More...
 
void pmc_enable_all_pck (void)
 Enable all programmable clocks. More...
 
void pmc_enable_all_periph_clk (void)
 Enable all peripheral clocks. More...
 
void pmc_enable_backupmode (void)
 Enable Backup Mode. More...
 
void pmc_enable_clock_failure_detector (void)
 Enable Clock Failure Detector. More...
 
void pmc_enable_cpbmck (void)
 Enable Coprocessor Bus Master Clocks. More...
 
void pmc_enable_cpck (void)
 Enable Coprocessor Clocks. More...
 
void pmc_enable_interrupt (uint32_t ul_sources)
 Enable PMC interrupts. More...
 
void pmc_enable_pck (uint32_t ul_id)
 Enable the specified programmable clock. More...
 
uint32_t pmc_enable_periph_clk (uint32_t ul_id)
 Enable the specified peripheral clock. More...
 
void pmc_enable_pllack (uint32_t mula, uint32_t pllacount, uint32_t diva)
 Enable PLLA clock. More...
 
void pmc_enable_pllbck (uint32_t mulb, uint32_t pllbcount, uint32_t divb)
 Enable PLLB clock. More...
 
void pmc_enable_sclk_osc_freq_monitor (void)
 Enable Slow Crystal Oscillator Frequency Monitoring. More...
 
void pmc_enable_sleepmode (uint8_t uc_type)
 Enable Sleep Mode. More...
 
uint32_t pmc_enable_sleepwalking (uint32_t ul_id)
 Enable the specified peripheral clock. More...
 
void pmc_enable_udpck (void)
 Enable UDP (USB) clock. More...
 
void pmc_enable_uhpck (void)
 Enable UHP (USB) clock. More...
 
void pmc_enable_upll_clock (void)
 Enable UPLL clock. More...
 
void pmc_enable_waitmode (void)
 Enable Wait Mode. More...
 
uint32_t pmc_get_active_status0 (void)
 Return peripheral active status. More...
 
uint32_t pmc_get_active_status1 (void)
 Return peripheral active status. More...
 
uint32_t pmc_get_interrupt_mask (void)
 Get PMC interrupt mask. More...
 
uint32_t pmc_get_mainck_config (void)
 Get Main clock source configuration. More...
 
uint32_t pmc_get_pllack_config (void)
 Get PLLA clock configuration. More...
 
uint32_t pmc_get_slck_config (void)
 Get Slow clock source configuration. More...
 
uint32_t pmc_get_sleepwalking_status0 (void)
 Return peripheral sleepwalking enable status. More...
 
uint32_t pmc_get_sleepwalking_status1 (void)
 Return peripheral sleepwalking enable status. More...
 
uint32_t pmc_get_status (void)
 Get current status. More...
 
uint32_t pmc_get_upllckdiv_config (void)
 Get UPLLCKDIV configuration. More...
 
uint32_t pmc_get_writeprotect_status (void)
 Return write protect status. More...
 
bool pmc_is_cpbmck_enabled (void)
 Check if the Coprocessor Bus Master Clocks is enabled. More...
 
bool pmc_is_cpck_enabled (void)
 Check if the Coprocessor Clocks is enabled. More...
 
uint32_t pmc_is_locked_pllack (void)
 Is PLLA locked? More...
 
uint32_t pmc_is_locked_pllbck (void)
 Is PLLB locked? More...
 
uint32_t pmc_is_locked_upll (void)
 Is UPLL locked? More...
 
uint32_t pmc_is_pck_enabled (uint32_t ul_id)
 Check if the specified programmable clock is enabled. More...
 
uint32_t pmc_is_periph_clk_enabled (uint32_t ul_id)
 Check if the specified peripheral clock is enabled. More...
 
void pmc_mainck_osc_select (uint32_t ul_xtal_rc)
 Select Main Crystal or internal RC as main clock source. More...
 
void pmc_mck_set_division (uint32_t ul_div)
 Set the division of the MCK. More...
 
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...
 
void pmc_osc_bypass_main_xtal (void)
 Bypass main XTAL. More...
 
void pmc_osc_disable_fastrc (void)
 Disable the internal fast RC. More...
 
void pmc_osc_disable_main_xtal (void)
 Disable the main Xtal. More...
 
void pmc_osc_disable_xtal (uint32_t ul_bypass)
 Disable the external Xtal. More...
 
void pmc_osc_enable_fastrc (uint32_t ul_rc)
 Enable fast RC oscillator. More...
 
void pmc_osc_enable_main_xtal (uint32_t ul_xtal_startup_time)
 Enable main XTAL oscillator. More...
 
uint32_t pmc_osc_is_bypassed_main_xtal (void)
 Check if the main crystal is bypassed. More...
 
uint32_t pmc_osc_is_ready_32kxtal (void)
 Check if the external 32k Xtal is ready. More...
 
uint32_t pmc_osc_is_ready_fastrc (void)
 Check if the main fastrc is ready. More...
 
uint32_t pmc_osc_is_ready_main_xtal (void)
 Check if the main crystal is ready. More...
 
uint32_t pmc_osc_is_ready_mainck (void)
 Check if the MAINCK is ready. More...
 
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...
 
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_set_flash_in_wait_mode (uint32_t ul_flash_state)
 Set the embedded flash state in wait mode. More...
 
void pmc_set_writeprotect (uint32_t ul_enable)
 Enable or disable write protect of PMC registers. More...
 
void pmc_switch_mainck_to_fastrc (uint32_t ul_moscrcf)
 Switch main clock source selection to internal fast RC. 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...
 
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...
 
uint32_t pmc_switch_mck_to_pllbck (uint32_t ul_pres)
 Switch master clock source selection to PLLB clock. 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_upllck (uint32_t ul_pres)
 Switch master clock source selection to UPLL 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_mck (uint32_t ul_id, uint32_t ul_pres)
 Switch programmable clock source selection to mck. 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_pllbck (uint32_t ul_id, uint32_t ul_pres)
 Switch programmable clock source selection to PLLB 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_upllck (uint32_t ul_id, uint32_t ul_pres)
 Switch programmable clock source selection to UPLL clock. More...
 
void pmc_switch_sclk_to_32kxtal (uint32_t ul_bypass)
 Switch slow clock source selection to external 32k (Xtal or Bypass). More...
 
void pmc_switch_udpck_to_pllack (uint32_t ul_usbdiv)
 Switch UDP (USB) clock source selection to PLLA clock. More...
 
void pmc_switch_udpck_to_pllbck (uint32_t ul_usbdiv)
 Switch UDP (USB) clock source selection to PLLB clock. More...
 
void pmc_switch_udpck_to_upllck (uint32_t ul_usbdiv)
 Switch UDP (USB) clock source selection to UPLL clock. More...
 
void pmc_switch_uhpck_to_pllack (uint32_t ul_usbdiv)
 Switch UHP (USB) clock source selection to PLLA clock. More...
 
void pmc_switch_uhpck_to_pllbck (uint32_t ul_usbdiv)
 Switch UHP (USB) clock source selection to PLLB clock. More...
 

Variables

static uint32_t ul_flash_in_wait_mode = PMC_WAIT_MODE_FLASH_DEEP_POWERDOWN
 

#define MAX_PERIPH_ID   31