BA / SerialCom

Fork of OmniWheels by Gustav Atmel

Committer:
gustavatmel
Date:
Tue May 01 15:55:34 2018 +0000
Revision:
2:798925c9e4a8
Parent:
1:9c5af431a1f1
bluetooth

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gustavatmel 1:9c5af431a1f1 1 /**
gustavatmel 1:9c5af431a1f1 2 * \file
gustavatmel 1:9c5af431a1f1 3 *
gustavatmel 1:9c5af431a1f1 4 * \brief SAM System related functionality
gustavatmel 1:9c5af431a1f1 5 *
gustavatmel 1:9c5af431a1f1 6 * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
gustavatmel 1:9c5af431a1f1 7 *
gustavatmel 1:9c5af431a1f1 8 * \asf_license_start
gustavatmel 1:9c5af431a1f1 9 *
gustavatmel 1:9c5af431a1f1 10 * \page License
gustavatmel 1:9c5af431a1f1 11 *
gustavatmel 1:9c5af431a1f1 12 * Redistribution and use in source and binary forms, with or without
gustavatmel 1:9c5af431a1f1 13 * modification, are permitted provided that the following conditions are met:
gustavatmel 1:9c5af431a1f1 14 *
gustavatmel 1:9c5af431a1f1 15 * 1. Redistributions of source code must retain the above copyright notice,
gustavatmel 1:9c5af431a1f1 16 * this list of conditions and the following disclaimer.
gustavatmel 1:9c5af431a1f1 17 *
gustavatmel 1:9c5af431a1f1 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
gustavatmel 1:9c5af431a1f1 19 * this list of conditions and the following disclaimer in the documentation
gustavatmel 1:9c5af431a1f1 20 * and/or other materials provided with the distribution.
gustavatmel 1:9c5af431a1f1 21 *
gustavatmel 1:9c5af431a1f1 22 * 3. The name of Atmel may not be used to endorse or promote products derived
gustavatmel 1:9c5af431a1f1 23 * from this software without specific prior written permission.
gustavatmel 1:9c5af431a1f1 24 *
gustavatmel 1:9c5af431a1f1 25 * 4. This software may only be redistributed and used in connection with an
gustavatmel 1:9c5af431a1f1 26 * Atmel microcontroller product.
gustavatmel 1:9c5af431a1f1 27 *
gustavatmel 1:9c5af431a1f1 28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
gustavatmel 1:9c5af431a1f1 29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
gustavatmel 1:9c5af431a1f1 30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
gustavatmel 1:9c5af431a1f1 31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
gustavatmel 1:9c5af431a1f1 32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
gustavatmel 1:9c5af431a1f1 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
gustavatmel 1:9c5af431a1f1 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
gustavatmel 1:9c5af431a1f1 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
gustavatmel 1:9c5af431a1f1 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
gustavatmel 1:9c5af431a1f1 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
gustavatmel 1:9c5af431a1f1 38 * POSSIBILITY OF SUCH DAMAGE.
gustavatmel 1:9c5af431a1f1 39 *
gustavatmel 1:9c5af431a1f1 40 * \asf_license_stop
gustavatmel 1:9c5af431a1f1 41 *
gustavatmel 1:9c5af431a1f1 42 */
gustavatmel 1:9c5af431a1f1 43 /*
gustavatmel 1:9c5af431a1f1 44 * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
gustavatmel 1:9c5af431a1f1 45 */
gustavatmel 1:9c5af431a1f1 46 #ifndef SYSTEM_H_INCLUDED
gustavatmel 1:9c5af431a1f1 47 #define SYSTEM_H_INCLUDED
gustavatmel 1:9c5af431a1f1 48
gustavatmel 1:9c5af431a1f1 49 #include <compiler.h>
gustavatmel 1:9c5af431a1f1 50 #include <clock.h>
gustavatmel 1:9c5af431a1f1 51 #include <gclk.h>
gustavatmel 1:9c5af431a1f1 52 #include <pinmux.h>
gustavatmel 1:9c5af431a1f1 53 #include <power.h>
gustavatmel 1:9c5af431a1f1 54 #include <reset.h>
gustavatmel 1:9c5af431a1f1 55
gustavatmel 1:9c5af431a1f1 56 #ifdef __cplusplus
gustavatmel 1:9c5af431a1f1 57 extern "C" {
gustavatmel 1:9c5af431a1f1 58 #endif
gustavatmel 1:9c5af431a1f1 59
gustavatmel 1:9c5af431a1f1 60 /**
gustavatmel 1:9c5af431a1f1 61 * \defgroup asfdoc_sam0_system_group SAM System (SYSTEM) Driver
gustavatmel 1:9c5af431a1f1 62 *
gustavatmel 1:9c5af431a1f1 63 * This driver for Atmel&reg; | SMART ARM&reg;-based microcontrollers provides an interface for the configuration
gustavatmel 1:9c5af431a1f1 64 * and management of the device's system relation functionality, necessary for
gustavatmel 1:9c5af431a1f1 65 * the basic device operation. This is not limited to a single peripheral, but
gustavatmel 1:9c5af431a1f1 66 * extends across multiple hardware peripherals.
gustavatmel 1:9c5af431a1f1 67 *
gustavatmel 1:9c5af431a1f1 68 * The following peripherals are used by this module:
gustavatmel 1:9c5af431a1f1 69 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 70 * - PM (Power Manager)
gustavatmel 1:9c5af431a1f1 71 * - RSTC(Reset Controller)
gustavatmel 1:9c5af431a1f1 72 * - SUPC(Supply Controller)
gustavatmel 1:9c5af431a1f1 73 * \endif
gustavatmel 1:9c5af431a1f1 74 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 75 * - PM (Power Manager)
gustavatmel 1:9c5af431a1f1 76 * - RSTC(Reset Controller)
gustavatmel 1:9c5af431a1f1 77 * - SUPC(Supply Controller)
gustavatmel 1:9c5af431a1f1 78 * \endif
gustavatmel 1:9c5af431a1f1 79 * \if DEVICE_SAMD21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 80 * - SYSCTRL (System Control)
gustavatmel 1:9c5af431a1f1 81 * - PM (Power Manager)
gustavatmel 1:9c5af431a1f1 82 * \endif
gustavatmel 1:9c5af431a1f1 83 *
gustavatmel 1:9c5af431a1f1 84 * The following devices can use this module:
gustavatmel 1:9c5af431a1f1 85 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 86 * - Atmel | SMART SAM L21
gustavatmel 1:9c5af431a1f1 87 * \endif
gustavatmel 1:9c5af431a1f1 88 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 89 * - Atmel | SMART SAM C20/C21
gustavatmel 1:9c5af431a1f1 90 * \endif
gustavatmel 1:9c5af431a1f1 91 * \if DEVICE_SAMD21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 92 * - Atmel | SMART SAM D20/D21
gustavatmel 1:9c5af431a1f1 93 * - Atmel | SMART SAM R21
gustavatmel 1:9c5af431a1f1 94 * - Atmel | SMART SAM D10/D11
gustavatmel 1:9c5af431a1f1 95 * - Atmel | SMART SAM DAx
gustavatmel 1:9c5af431a1f1 96 * \endif
gustavatmel 1:9c5af431a1f1 97 *
gustavatmel 1:9c5af431a1f1 98 * The outline of this documentation is as follows:
gustavatmel 1:9c5af431a1f1 99 * - \ref asfdoc_sam0_system_prerequisites
gustavatmel 1:9c5af431a1f1 100 * - \ref asfdoc_sam0_system_module_overview
gustavatmel 1:9c5af431a1f1 101 * - \ref asfdoc_sam0_system_special_considerations
gustavatmel 1:9c5af431a1f1 102 * - \ref asfdoc_sam0_system_extra_info
gustavatmel 1:9c5af431a1f1 103 * - \ref asfdoc_sam0_system_examples
gustavatmel 1:9c5af431a1f1 104 * - \ref asfdoc_sam0_system_api_overview
gustavatmel 1:9c5af431a1f1 105 *
gustavatmel 1:9c5af431a1f1 106 *
gustavatmel 1:9c5af431a1f1 107 * \section asfdoc_sam0_system_prerequisites Prerequisites
gustavatmel 1:9c5af431a1f1 108 *
gustavatmel 1:9c5af431a1f1 109 * There are no prerequisites for this module.
gustavatmel 1:9c5af431a1f1 110 *
gustavatmel 1:9c5af431a1f1 111 *
gustavatmel 1:9c5af431a1f1 112 * \section asfdoc_sam0_system_module_overview Module Overview
gustavatmel 1:9c5af431a1f1 113 *
gustavatmel 1:9c5af431a1f1 114 * The System driver provides a collection of interfaces between the user
gustavatmel 1:9c5af431a1f1 115 * application logic, and the core device functionality (such as clocks, reset
gustavatmel 1:9c5af431a1f1 116 * cause determination, etc.) that is required for all applications. It contains
gustavatmel 1:9c5af431a1f1 117 * a number of sub-modules that control one specific aspect of the device:
gustavatmel 1:9c5af431a1f1 118 *
gustavatmel 1:9c5af431a1f1 119 * - System Core (this module)
gustavatmel 1:9c5af431a1f1 120 * - \ref asfdoc_sam0_system_clock_group "System Clock Control" (sub-module)
gustavatmel 1:9c5af431a1f1 121 * - \ref asfdoc_sam0_system_interrupt_group "System Interrupt Control" (sub-module)
gustavatmel 1:9c5af431a1f1 122 * - \ref asfdoc_sam0_system_pinmux_group "System Pin Multiplexer Control" (sub-module)
gustavatmel 1:9c5af431a1f1 123 *
gustavatmel 1:9c5af431a1f1 124 *
gustavatmel 1:9c5af431a1f1 125 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 126 * \subsection asfdoc_sam0_system_module_overview_vreg_l21 Voltage Regulator
gustavatmel 1:9c5af431a1f1 127 * The SAM device controls the voltage regulators for the core (VDDCORE) and
gustavatmel 1:9c5af431a1f1 128 * backup (VDDBU) domains. It sets the voltage regulators according to the sleep
gustavatmel 1:9c5af431a1f1 129 * modes, the performance level, or the user configuration.
gustavatmel 1:9c5af431a1f1 130 *
gustavatmel 1:9c5af431a1f1 131 * In active mode, the voltage regulator can be chosen on the fly between a LDO
gustavatmel 1:9c5af431a1f1 132 * or a Buck converter. In standby mode, the low power voltage regulator is used
gustavatmel 1:9c5af431a1f1 133 * to supply VDDCORE.
gustavatmel 1:9c5af431a1f1 134 *
gustavatmel 1:9c5af431a1f1 135 * \subsection asfdoc_sam0_system_module_overview_bbps Battery Backup Power Switch
gustavatmel 1:9c5af431a1f1 136 * The SAM device supports connection of a battery backup to the VBAT power pin.
gustavatmel 1:9c5af431a1f1 137 * It includes functionality that enables automatic power switching between main
gustavatmel 1:9c5af431a1f1 138 * power and battery backup power. This will ensure power to the backup domain,
gustavatmel 1:9c5af431a1f1 139 * when the main battery or power source is unavailable.
gustavatmel 1:9c5af431a1f1 140 * \endif
gustavatmel 1:9c5af431a1f1 141 *
gustavatmel 1:9c5af431a1f1 142 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 143 * \subsection asfdoc_sam0_system_module_overview_vreg_c21 Voltage Regulator
gustavatmel 1:9c5af431a1f1 144 * The SAM device controls the voltage regulators for the core (VDDCORE). It sets
gustavatmel 1:9c5af431a1f1 145 * the voltage regulators according to the sleep modes.
gustavatmel 1:9c5af431a1f1 146 *
gustavatmel 1:9c5af431a1f1 147 * There are a selectable reference voltage and voltage dependent on the temperature
gustavatmel 1:9c5af431a1f1 148 * which can be used by analog modules like the ADC.
gustavatmel 1:9c5af431a1f1 149 * \endif
gustavatmel 1:9c5af431a1f1 150 *
gustavatmel 1:9c5af431a1f1 151 * \subsection asfdoc_sam0_system_module_overview_vref Voltage References
gustavatmel 1:9c5af431a1f1 152 * The various analog modules within the SAM devices (such as AC, ADC, and
gustavatmel 1:9c5af431a1f1 153 * DAC) require a voltage reference to be configured to act as a reference point
gustavatmel 1:9c5af431a1f1 154 * for comparisons and conversions.
gustavatmel 1:9c5af431a1f1 155 *
gustavatmel 1:9c5af431a1f1 156 * The SAM devices contain multiple references, including an internal
gustavatmel 1:9c5af431a1f1 157 * temperature sensor and a fixed band-gap voltage source. When enabled, the
gustavatmel 1:9c5af431a1f1 158 * associated voltage reference can be selected within the desired peripheral
gustavatmel 1:9c5af431a1f1 159 * where applicable.
gustavatmel 1:9c5af431a1f1 160 *
gustavatmel 1:9c5af431a1f1 161 * \subsection asfdoc_sam0_system_module_overview_reset_cause System Reset Cause
gustavatmel 1:9c5af431a1f1 162 * In some applications there may be a need to execute a different program
gustavatmel 1:9c5af431a1f1 163 * flow based on how the device was reset. For example, if the cause of reset
gustavatmel 1:9c5af431a1f1 164 * was the Watchdog timer (WDT), this might indicate an error in the application,
gustavatmel 1:9c5af431a1f1 165 * and a form of error handling or error logging might be needed.
gustavatmel 1:9c5af431a1f1 166 *
gustavatmel 1:9c5af431a1f1 167 * For this reason, an API is provided to retrieve the cause of the last system
gustavatmel 1:9c5af431a1f1 168 * reset, so that appropriate action can be taken.
gustavatmel 1:9c5af431a1f1 169 *
gustavatmel 1:9c5af431a1f1 170 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 171 * There are three groups of reset sources:
gustavatmel 1:9c5af431a1f1 172 * - Power supply reset: Resets caused by an electrical issue. It covers POR and BOD reset.
gustavatmel 1:9c5af431a1f1 173 * - User reset: Resets caused by the application. It covers external reset,
gustavatmel 1:9c5af431a1f1 174 * system reset, and watchdog reset.
gustavatmel 1:9c5af431a1f1 175 * - Backup reset: Resets caused by a backup mode exit condition.
gustavatmel 1:9c5af431a1f1 176 *
gustavatmel 1:9c5af431a1f1 177 * \subsection asfdoc_sam0_system_module_overview_performance_level Performance Level
gustavatmel 1:9c5af431a1f1 178 * Performance level allows the user to adjust the regulator output voltage to reduce
gustavatmel 1:9c5af431a1f1 179 * power consumption. The user can on the fly select the most suitable performance
gustavatmel 1:9c5af431a1f1 180 * level, depending on the application demands.
gustavatmel 1:9c5af431a1f1 181 *
gustavatmel 1:9c5af431a1f1 182 * The SAM device can operate at two different performance levels (PL0 and PL2).
gustavatmel 1:9c5af431a1f1 183 * When operating at PL0, the voltage applied on the full logic area is reduced
gustavatmel 1:9c5af431a1f1 184 * by voltage scaling. This voltage scaling technique allows to reduce the active
gustavatmel 1:9c5af431a1f1 185 * power consumption while decreasing the maximum frequency of the device. When
gustavatmel 1:9c5af431a1f1 186 * operating at PL2, the voltage regulator supplies the highest voltage, allowing
gustavatmel 1:9c5af431a1f1 187 * the device to run at higher clock speeds.
gustavatmel 1:9c5af431a1f1 188 *
gustavatmel 1:9c5af431a1f1 189 * Performance level transition is possible only when the device is in active
gustavatmel 1:9c5af431a1f1 190 * mode. After a reset, the device starts at the lowest performance level
gustavatmel 1:9c5af431a1f1 191 * (lowest power consumption and lowest max. frequency). The application can then
gustavatmel 1:9c5af431a1f1 192 * switch to another performance level at any time without any stop in the code
gustavatmel 1:9c5af431a1f1 193 * execution. As shown in \ref asfdoc_sam0_system_performance_level_transition_figure.
gustavatmel 1:9c5af431a1f1 194 *
gustavatmel 1:9c5af431a1f1 195 * \note When scaling down the performance level, the bus frequency should first be
gustavatmel 1:9c5af431a1f1 196 * scaled down in order to not exceed the maximum frequency allowed for the
gustavatmel 1:9c5af431a1f1 197 * low performance level.
gustavatmel 1:9c5af431a1f1 198 * When scaling up the performance level (e.g. from PL0 to PL2), check the performance
gustavatmel 1:9c5af431a1f1 199 * level status before increasing the bus frequency. It can be increased only
gustavatmel 1:9c5af431a1f1 200 * when the performance level transition is completed.
gustavatmel 1:9c5af431a1f1 201 *
gustavatmel 1:9c5af431a1f1 202 * \anchor asfdoc_sam0_system_performance_level_transition_figure
gustavatmel 1:9c5af431a1f1 203 * \image html performance_level_transition.svg "Performance Level Transition"
gustavatmel 1:9c5af431a1f1 204 *
gustavatmel 1:9c5af431a1f1 205 * \subsection asfdoc_sam0_system_module_overview_power_domain Power Domain Gating
gustavatmel 1:9c5af431a1f1 206 * Power domain gating allows power saving by reducing the voltage in logic
gustavatmel 1:9c5af431a1f1 207 * areas in the device to a low-power supply. The feature is available in
gustavatmel 1:9c5af431a1f1 208 * Standby sleep mode and will reduce the voltage in domains where all peripherals
gustavatmel 1:9c5af431a1f1 209 * are idle. Internal logic will maintain its content, meaning the corresponding
gustavatmel 1:9c5af431a1f1 210 * peripherals will not need to be reconfigured when normal operating voltage
gustavatmel 1:9c5af431a1f1 211 * is returned. Most power domains can be in the following three states:
gustavatmel 1:9c5af431a1f1 212 *
gustavatmel 1:9c5af431a1f1 213 * - Active state: The power domain is powered on.
gustavatmel 1:9c5af431a1f1 214 * - Retention state: The main voltage supply for the power domain is switched off,
gustavatmel 1:9c5af431a1f1 215 * while maintaining a secondary low-power supply for the sequential cells. The
gustavatmel 1:9c5af431a1f1 216 * logic context is restored when waking up.
gustavatmel 1:9c5af431a1f1 217 * - Off state: The power domain is entirely powered off. The logic context is lost.
gustavatmel 1:9c5af431a1f1 218 *
gustavatmel 1:9c5af431a1f1 219 * The SAM L21 device contains three power domains which can be controlled using
gustavatmel 1:9c5af431a1f1 220 * power domain gating, namely PD0, PD1, and PD2. These power domains can be
gustavatmel 1:9c5af431a1f1 221 * configured to the following cases:
gustavatmel 1:9c5af431a1f1 222 * - Default with no sleepwalking peripherals: A power domain is automatically set
gustavatmel 1:9c5af431a1f1 223 * to retention state in standby sleep mode if no activity require it. The application
gustavatmel 1:9c5af431a1f1 224 * can force all power domains to remain in active state during standby sleep mode
gustavatmel 1:9c5af431a1f1 225 * in order to accelerate wakeup time.
gustavatmel 1:9c5af431a1f1 226 * - Default with sleepwalking peripherals: If one or more peripherals are enabled
gustavatmel 1:9c5af431a1f1 227 * to perform sleepwalking tasks in standby sleep mode, the corresponding power
gustavatmel 1:9c5af431a1f1 228 * domain (PDn) remains in active state as well as all inferior power domains (<PDn).
gustavatmel 1:9c5af431a1f1 229 * - Sleepwalking with dynamic power domain gating: During standby sleep mode, a
gustavatmel 1:9c5af431a1f1 230 * power domain (PDn) in active can wake up a superior power domain (>PDn) in order
gustavatmel 1:9c5af431a1f1 231 * to perform a sleepwalking task. The superior power domain is then automatically
gustavatmel 1:9c5af431a1f1 232 * set to active state. At the end of the sleepwalking task, the device can either
gustavatmel 1:9c5af431a1f1 233 * be woken up or the superior power domain can return to retention state.
gustavatmel 1:9c5af431a1f1 234 *
gustavatmel 1:9c5af431a1f1 235 * Power domains can be linked to each other, it allows a power domain (PDn) to be kept
gustavatmel 1:9c5af431a1f1 236 * in active state if the inferior power domain (PDn-1) is in active state too.
gustavatmel 1:9c5af431a1f1 237 *
gustavatmel 1:9c5af431a1f1 238 * \ref asfdoc_sam0_system_power_domain_overview_table illustrates the
gustavatmel 1:9c5af431a1f1 239 * four cases to consider in standby mode.
gustavatmel 1:9c5af431a1f1 240 *
gustavatmel 1:9c5af431a1f1 241 * \anchor asfdoc_sam0_system_power_domain_overview_table
gustavatmel 1:9c5af431a1f1 242 * <table>
gustavatmel 1:9c5af431a1f1 243 * <caption>Sleep Mode versus Power Domain State Overview</caption>
gustavatmel 1:9c5af431a1f1 244 * <tr>
gustavatmel 1:9c5af431a1f1 245 * <th>Sleep mode</th>
gustavatmel 1:9c5af431a1f1 246 * <th>PD0</th>
gustavatmel 1:9c5af431a1f1 247 * <th>PD1</th>
gustavatmel 1:9c5af431a1f1 248 * <th>PD2</th>
gustavatmel 1:9c5af431a1f1 249 * <th>PDTOP</th>
gustavatmel 1:9c5af431a1f1 250 * <th>PDBACKUP</th>
gustavatmel 1:9c5af431a1f1 251 * </tr>
gustavatmel 1:9c5af431a1f1 252 * <tr>
gustavatmel 1:9c5af431a1f1 253 * <td>Idle</td>
gustavatmel 1:9c5af431a1f1 254 * <td>active</td>
gustavatmel 1:9c5af431a1f1 255 * <td>active</td>
gustavatmel 1:9c5af431a1f1 256 * <td>active</td>
gustavatmel 1:9c5af431a1f1 257 * <td>active</td>
gustavatmel 1:9c5af431a1f1 258 * <td>active</td>
gustavatmel 1:9c5af431a1f1 259 * </tr>
gustavatmel 1:9c5af431a1f1 260 * <tr>
gustavatmel 1:9c5af431a1f1 261 * <td>Standby - Case 1</td>
gustavatmel 1:9c5af431a1f1 262 * <td>active</td>
gustavatmel 1:9c5af431a1f1 263 * <td>active</td>
gustavatmel 1:9c5af431a1f1 264 * <td>active</td>
gustavatmel 1:9c5af431a1f1 265 * <td>active</td>
gustavatmel 1:9c5af431a1f1 266 * <td>active</td>
gustavatmel 1:9c5af431a1f1 267 * </tr>
gustavatmel 1:9c5af431a1f1 268 * <tr>
gustavatmel 1:9c5af431a1f1 269 * <td>Standby - Case 2</td>
gustavatmel 1:9c5af431a1f1 270 * <td>active</td>
gustavatmel 1:9c5af431a1f1 271 * <td>active</td>
gustavatmel 1:9c5af431a1f1 272 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 273 * <td>active</td>
gustavatmel 1:9c5af431a1f1 274 * <td>active</td>
gustavatmel 1:9c5af431a1f1 275 * </tr>
gustavatmel 1:9c5af431a1f1 276 * <tr>
gustavatmel 1:9c5af431a1f1 277 * <td>Standby - Case 3</td>
gustavatmel 1:9c5af431a1f1 278 * <td>active</td>
gustavatmel 1:9c5af431a1f1 279 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 280 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 281 * <td>active</td>
gustavatmel 1:9c5af431a1f1 282 * <td>active</td>
gustavatmel 1:9c5af431a1f1 283 * </tr>
gustavatmel 1:9c5af431a1f1 284 * <tr>
gustavatmel 1:9c5af431a1f1 285 * <td>Standby - Case 4</td>
gustavatmel 1:9c5af431a1f1 286 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 287 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 288 * <td>retention</td>
gustavatmel 1:9c5af431a1f1 289 * <td>active</td>
gustavatmel 1:9c5af431a1f1 290 * <td>active</td>
gustavatmel 1:9c5af431a1f1 291 * </tr>
gustavatmel 1:9c5af431a1f1 292 * <tr>
gustavatmel 1:9c5af431a1f1 293 * <td>Backup</td>
gustavatmel 1:9c5af431a1f1 294 * <td>off</td>
gustavatmel 1:9c5af431a1f1 295 * <td>off</td>
gustavatmel 1:9c5af431a1f1 296 * <td>off</td>
gustavatmel 1:9c5af431a1f1 297 * <td>off</td>
gustavatmel 1:9c5af431a1f1 298 * <td>active</td>
gustavatmel 1:9c5af431a1f1 299 * </tr>
gustavatmel 1:9c5af431a1f1 300 * <tr>
gustavatmel 1:9c5af431a1f1 301 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 302 * <td>off</td>
gustavatmel 1:9c5af431a1f1 303 * <td>off</td>
gustavatmel 1:9c5af431a1f1 304 * <td>off</td>
gustavatmel 1:9c5af431a1f1 305 * <td>off</td>
gustavatmel 1:9c5af431a1f1 306 * <td>off</td>
gustavatmel 1:9c5af431a1f1 307 * </tr>
gustavatmel 1:9c5af431a1f1 308 * </table>
gustavatmel 1:9c5af431a1f1 309 *
gustavatmel 1:9c5af431a1f1 310 * \subsection asfdoc_sam0_system_module_overview_ram_state RAMs Low Power Mode
gustavatmel 1:9c5af431a1f1 311 * By default, in standby sleep mode, RAM is in low power mode (back biased)
gustavatmel 1:9c5af431a1f1 312 * if its power domain is in retention state.
gustavatmel 1:9c5af431a1f1 313 * \ref asfdoc_sam0_system_power_ram_state_table lists RAMs low power mode.
gustavatmel 1:9c5af431a1f1 314 *
gustavatmel 1:9c5af431a1f1 315 * \anchor asfdoc_sam0_system_power_ram_state_table
gustavatmel 1:9c5af431a1f1 316 * <table>
gustavatmel 1:9c5af431a1f1 317 * <caption>RAM Back-biasing Mode</caption>
gustavatmel 1:9c5af431a1f1 318 * <tr>
gustavatmel 1:9c5af431a1f1 319 * <th>RAM mode</th>
gustavatmel 1:9c5af431a1f1 320 * <th>Description</th>
gustavatmel 1:9c5af431a1f1 321 * </tr>
gustavatmel 1:9c5af431a1f1 322 * <tr>
gustavatmel 1:9c5af431a1f1 323 * <td>Retention Back-biasing mode</td>
gustavatmel 1:9c5af431a1f1 324 * <td>RAM is back-biased if its power domain is in retention mode</td>
gustavatmel 1:9c5af431a1f1 325 * </tr>
gustavatmel 1:9c5af431a1f1 326 * <tr>
gustavatmel 1:9c5af431a1f1 327 * <td>Standby Back-biasing mode</td>
gustavatmel 1:9c5af431a1f1 328 * <td>RAM is back-biased if the device is in standby mode</td>
gustavatmel 1:9c5af431a1f1 329 * </tr>
gustavatmel 1:9c5af431a1f1 330 * <tr>
gustavatmel 1:9c5af431a1f1 331 * <td>Standby OFF mode</td>
gustavatmel 1:9c5af431a1f1 332 * <td>RAM is OFF if the device is in standby mode</td>
gustavatmel 1:9c5af431a1f1 333 * </tr>
gustavatmel 1:9c5af431a1f1 334 * <tr>
gustavatmel 1:9c5af431a1f1 335 * <td>Always OFF mode</td>
gustavatmel 1:9c5af431a1f1 336 * <td>RAM is OFF if the device is in RET mode</td>
gustavatmel 1:9c5af431a1f1 337 * </tr>
gustavatmel 1:9c5af431a1f1 338 * </table>
gustavatmel 1:9c5af431a1f1 339 *
gustavatmel 1:9c5af431a1f1 340 * \endif
gustavatmel 1:9c5af431a1f1 341 *
gustavatmel 1:9c5af431a1f1 342 * \subsection asfdoc_sam0_system_module_overview_sleep_mode Sleep Modes
gustavatmel 1:9c5af431a1f1 343 * The SAM devices have several sleep modes. The sleep mode controls
gustavatmel 1:9c5af431a1f1 344 * which clock systems on the device will remain enabled or disabled when the
gustavatmel 1:9c5af431a1f1 345 * device enters a low power sleep mode.
gustavatmel 1:9c5af431a1f1 346 * \ref asfdoc_sam0_system_module_sleep_mode_table "The table below" lists the
gustavatmel 1:9c5af431a1f1 347 * clock settings of the different sleep modes.
gustavatmel 1:9c5af431a1f1 348 *
gustavatmel 1:9c5af431a1f1 349 * \anchor asfdoc_sam0_system_module_sleep_mode_table
gustavatmel 1:9c5af431a1f1 350 * <table>
gustavatmel 1:9c5af431a1f1 351 * <caption>SAM Device Sleep Modes</caption>
gustavatmel 1:9c5af431a1f1 352 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 353 * <tr>
gustavatmel 1:9c5af431a1f1 354 * <th>Sleep mode</th>
gustavatmel 1:9c5af431a1f1 355 * <th>System clock</th>
gustavatmel 1:9c5af431a1f1 356 * <th>CPU clock</th>
gustavatmel 1:9c5af431a1f1 357 * <th>AHB/AHB clock</th>
gustavatmel 1:9c5af431a1f1 358 * <th>GCLK clocks</th>
gustavatmel 1:9c5af431a1f1 359 * <th>Oscillators (ONDEMAND = 0)</th>
gustavatmel 1:9c5af431a1f1 360 * <th>Oscillators (ONDEMAND = 1)</th>
gustavatmel 1:9c5af431a1f1 361 * <th>Regulator mode</th>
gustavatmel 1:9c5af431a1f1 362 * <th>RAM mode</th>
gustavatmel 1:9c5af431a1f1 363 * </tr>
gustavatmel 1:9c5af431a1f1 364 * <tr>
gustavatmel 1:9c5af431a1f1 365 * <td>Idle</td>
gustavatmel 1:9c5af431a1f1 366 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 367 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 368 * <td>Run if requested</td>
gustavatmel 1:9c5af431a1f1 369 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 370 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 371 * <td>Run if requested</td>
gustavatmel 1:9c5af431a1f1 372 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 373 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 374 * </tr>
gustavatmel 1:9c5af431a1f1 375 * <tr>
gustavatmel 1:9c5af431a1f1 376 * <td>Standby</td>
gustavatmel 1:9c5af431a1f1 377 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 378 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 379 * <td>Run if requested</td>
gustavatmel 1:9c5af431a1f1 380 * <td>Run if requested</td>
gustavatmel 1:9c5af431a1f1 381 * <td>Run if requested or RUNSTDBY = 1</td>
gustavatmel 1:9c5af431a1f1 382 * <td>Run if requested</td>
gustavatmel 1:9c5af431a1f1 383 * <td>Low pwer</td>
gustavatmel 1:9c5af431a1f1 384 * <td>Low pwer</td>
gustavatmel 1:9c5af431a1f1 385 * </tr>
gustavatmel 1:9c5af431a1f1 386 * <tr>
gustavatmel 1:9c5af431a1f1 387 * <td>Backup</td>
gustavatmel 1:9c5af431a1f1 388 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 389 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 390 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 391 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 392 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 393 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 394 * <td>Backup</td>
gustavatmel 1:9c5af431a1f1 395 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 396 * </tr>
gustavatmel 1:9c5af431a1f1 397 * <tr>
gustavatmel 1:9c5af431a1f1 398 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 399 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 400 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 401 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 402 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 403 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 404 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 405 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 406 * <td>Off</td>
gustavatmel 1:9c5af431a1f1 407 * </tr>
gustavatmel 1:9c5af431a1f1 408 * \else
gustavatmel 1:9c5af431a1f1 409 * <tr>
gustavatmel 1:9c5af431a1f1 410 * <th>Sleep mode</th>
gustavatmel 1:9c5af431a1f1 411 * <th>CPU clock</th>
gustavatmel 1:9c5af431a1f1 412 * <th>AHB clock</th>
gustavatmel 1:9c5af431a1f1 413 * <th>APB clocks</th>
gustavatmel 1:9c5af431a1f1 414 * <th>Clock sources</th>
gustavatmel 1:9c5af431a1f1 415 * <th>System clock</th>
gustavatmel 1:9c5af431a1f1 416 * <th>32KHz</th>
gustavatmel 1:9c5af431a1f1 417 * <th>Reg mode</th>
gustavatmel 1:9c5af431a1f1 418 * <th>RAM mode</th>
gustavatmel 1:9c5af431a1f1 419 * </tr>
gustavatmel 1:9c5af431a1f1 420 * <tr>
gustavatmel 1:9c5af431a1f1 421 * <td>Idle 0</td>
gustavatmel 1:9c5af431a1f1 422 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 423 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 424 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 425 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 426 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 427 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 428 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 429 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 430 * </tr>
gustavatmel 1:9c5af431a1f1 431 * <tr>
gustavatmel 1:9c5af431a1f1 432 * <td>Idle 1</td>
gustavatmel 1:9c5af431a1f1 433 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 434 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 435 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 436 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 437 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 438 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 439 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 440 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 441 * </tr>
gustavatmel 1:9c5af431a1f1 442 * <tr>
gustavatmel 1:9c5af431a1f1 443 * <td>Idle 2</td>
gustavatmel 1:9c5af431a1f1 444 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 445 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 446 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 447 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 448 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 449 * <td>Run</td>
gustavatmel 1:9c5af431a1f1 450 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 451 * <td>Normal</td>
gustavatmel 1:9c5af431a1f1 452 * </tr>
gustavatmel 1:9c5af431a1f1 453 * <tr>
gustavatmel 1:9c5af431a1f1 454 * <td>Standby</td>
gustavatmel 1:9c5af431a1f1 455 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 456 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 457 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 458 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 459 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 460 * <td>Stop</td>
gustavatmel 1:9c5af431a1f1 461 * <td>Low Power</td>
gustavatmel 1:9c5af431a1f1 462 * <td>Source/Drain biasing</td>
gustavatmel 1:9c5af431a1f1 463 * </tr>
gustavatmel 1:9c5af431a1f1 464 * \endif
gustavatmel 1:9c5af431a1f1 465 * </table>
gustavatmel 1:9c5af431a1f1 466 *
gustavatmel 1:9c5af431a1f1 467 * Before entering device sleep, one of the available sleep modes must be set.
gustavatmel 1:9c5af431a1f1 468 * The device will automatically wake up in response to an interrupt being
gustavatmel 1:9c5af431a1f1 469 * generated or upon any other sleep mode exit condition.
gustavatmel 1:9c5af431a1f1 470 *
gustavatmel 1:9c5af431a1f1 471 * Some peripheral clocks will remain enabled during sleep, depending on their
gustavatmel 1:9c5af431a1f1 472 * configuration. If desired, the modules can remain clocked during sleep to allow
gustavatmel 1:9c5af431a1f1 473 * them continue to operate while other parts of the system are powered down
gustavatmel 1:9c5af431a1f1 474 * to save power.
gustavatmel 1:9c5af431a1f1 475 *
gustavatmel 1:9c5af431a1f1 476 *
gustavatmel 1:9c5af431a1f1 477 * \section asfdoc_sam0_system_special_considerations Special Considerations
gustavatmel 1:9c5af431a1f1 478 *
gustavatmel 1:9c5af431a1f1 479 * Most of the functions in this driver have device specific restrictions and
gustavatmel 1:9c5af431a1f1 480 * caveats; refer to your device datasheet.
gustavatmel 1:9c5af431a1f1 481 *
gustavatmel 1:9c5af431a1f1 482 *
gustavatmel 1:9c5af431a1f1 483 * \section asfdoc_sam0_system_extra_info Extra Information
gustavatmel 1:9c5af431a1f1 484 *
gustavatmel 1:9c5af431a1f1 485 * For extra information, see \ref asfdoc_sam0_system_extra. This includes:
gustavatmel 1:9c5af431a1f1 486 * - \ref asfdoc_sam0_system_extra_acronyms
gustavatmel 1:9c5af431a1f1 487 * - \ref asfdoc_sam0_system_extra_dependencies
gustavatmel 1:9c5af431a1f1 488 * - \ref asfdoc_sam0_system_extra_errata
gustavatmel 1:9c5af431a1f1 489 * - \ref asfdoc_sam0_system_extra_history
gustavatmel 1:9c5af431a1f1 490 *
gustavatmel 1:9c5af431a1f1 491 *
gustavatmel 1:9c5af431a1f1 492 * \section asfdoc_sam0_system_examples Examples
gustavatmel 1:9c5af431a1f1 493 *
gustavatmel 1:9c5af431a1f1 494 * For SYSTEM module related examples, refer to the sub-modules listed in
gustavatmel 1:9c5af431a1f1 495 * the \ref asfdoc_sam0_system_module_overview "system module overview".
gustavatmel 1:9c5af431a1f1 496 *
gustavatmel 1:9c5af431a1f1 497 * For a list of examples related to this driver, see
gustavatmel 1:9c5af431a1f1 498 * \ref asfdoc_sam0_drivers_power_exqsg.
gustavatmel 1:9c5af431a1f1 499 *
gustavatmel 1:9c5af431a1f1 500 *
gustavatmel 1:9c5af431a1f1 501 * \section asfdoc_sam0_system_api_overview API Overview
gustavatmel 1:9c5af431a1f1 502 * @{
gustavatmel 1:9c5af431a1f1 503 */
gustavatmel 1:9c5af431a1f1 504
gustavatmel 1:9c5af431a1f1 505 /**
gustavatmel 1:9c5af431a1f1 506 * \name System Debugger
gustavatmel 1:9c5af431a1f1 507 * @{
gustavatmel 1:9c5af431a1f1 508 */
gustavatmel 1:9c5af431a1f1 509
gustavatmel 1:9c5af431a1f1 510 /**
gustavatmel 1:9c5af431a1f1 511 * \brief Check if debugger is present.
gustavatmel 1:9c5af431a1f1 512 *
gustavatmel 1:9c5af431a1f1 513 * Check if debugger is connected to the onboard debug system (DAP).
gustavatmel 1:9c5af431a1f1 514 *
gustavatmel 1:9c5af431a1f1 515 * \return A bool identifying if a debugger is present.
gustavatmel 1:9c5af431a1f1 516 *
gustavatmel 1:9c5af431a1f1 517 * \retval true Debugger is connected to the system
gustavatmel 1:9c5af431a1f1 518 * \retval false Debugger is not connected to the system
gustavatmel 1:9c5af431a1f1 519 *
gustavatmel 1:9c5af431a1f1 520 */
gustavatmel 1:9c5af431a1f1 521 static inline bool system_is_debugger_present(void)
gustavatmel 1:9c5af431a1f1 522 {
gustavatmel 1:9c5af431a1f1 523 return DSU->STATUSB.reg & DSU_STATUSB_DBGPRES;
gustavatmel 1:9c5af431a1f1 524 }
gustavatmel 1:9c5af431a1f1 525
gustavatmel 1:9c5af431a1f1 526 /**
gustavatmel 1:9c5af431a1f1 527 * @}
gustavatmel 1:9c5af431a1f1 528 */
gustavatmel 1:9c5af431a1f1 529
gustavatmel 1:9c5af431a1f1 530 /**
gustavatmel 1:9c5af431a1f1 531 * \name System Identification
gustavatmel 1:9c5af431a1f1 532 * @{
gustavatmel 1:9c5af431a1f1 533 */
gustavatmel 1:9c5af431a1f1 534
gustavatmel 1:9c5af431a1f1 535 /**
gustavatmel 1:9c5af431a1f1 536 * \brief Retrieve the device identification signature.
gustavatmel 1:9c5af431a1f1 537 *
gustavatmel 1:9c5af431a1f1 538 * Retrieves the signature of the current device.
gustavatmel 1:9c5af431a1f1 539 *
gustavatmel 1:9c5af431a1f1 540 * \return Device ID signature as a 32-bit integer.
gustavatmel 1:9c5af431a1f1 541 */
gustavatmel 1:9c5af431a1f1 542 static inline uint32_t system_get_device_id(void)
gustavatmel 1:9c5af431a1f1 543 {
gustavatmel 1:9c5af431a1f1 544 return DSU->DID.reg;
gustavatmel 1:9c5af431a1f1 545 }
gustavatmel 1:9c5af431a1f1 546
gustavatmel 1:9c5af431a1f1 547 /**
gustavatmel 1:9c5af431a1f1 548 * @}
gustavatmel 1:9c5af431a1f1 549 */
gustavatmel 1:9c5af431a1f1 550
gustavatmel 1:9c5af431a1f1 551 /**
gustavatmel 1:9c5af431a1f1 552 * \name System Initialization
gustavatmel 1:9c5af431a1f1 553 * @{
gustavatmel 1:9c5af431a1f1 554 */
gustavatmel 1:9c5af431a1f1 555
gustavatmel 1:9c5af431a1f1 556 void system_init(void);
gustavatmel 1:9c5af431a1f1 557
gustavatmel 1:9c5af431a1f1 558 /**
gustavatmel 1:9c5af431a1f1 559 * @}
gustavatmel 1:9c5af431a1f1 560 */
gustavatmel 1:9c5af431a1f1 561
gustavatmel 1:9c5af431a1f1 562
gustavatmel 1:9c5af431a1f1 563 /**
gustavatmel 1:9c5af431a1f1 564 * @}
gustavatmel 1:9c5af431a1f1 565 */
gustavatmel 1:9c5af431a1f1 566
gustavatmel 1:9c5af431a1f1 567 /**
gustavatmel 1:9c5af431a1f1 568
gustavatmel 1:9c5af431a1f1 569 * \page asfdoc_sam0_drivers_power_exqsg Examples for Power Driver
gustavatmel 1:9c5af431a1f1 570 *
gustavatmel 1:9c5af431a1f1 571 * This is a list of the available Quick Start Guides (QSGs) and example
gustavatmel 1:9c5af431a1f1 572 * applications. QSGs are simple examples with step-by-step instructions to
gustavatmel 1:9c5af431a1f1 573 * configure and use this driver in a selection of
gustavatmel 1:9c5af431a1f1 574 * use cases. Note that a QSG can be compiled as a standalone application or be
gustavatmel 1:9c5af431a1f1 575 * added to the user application.
gustavatmel 1:9c5af431a1f1 576 *
gustavatmel 1:9c5af431a1f1 577 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 578 * - \subpage asfdoc_sam0_power_basic_use_case
gustavatmel 1:9c5af431a1f1 579 * \endif
gustavatmel 1:9c5af431a1f1 580 *
gustavatmel 1:9c5af431a1f1 581 * \page asfdoc_sam0_system_extra Extra Information for SYSTEM Driver
gustavatmel 1:9c5af431a1f1 582 *
gustavatmel 1:9c5af431a1f1 583 * \section asfdoc_sam0_system_extra_acronyms Acronyms
gustavatmel 1:9c5af431a1f1 584 * Below is a table listing the acronyms used in this module, along with their
gustavatmel 1:9c5af431a1f1 585 * intended meanings.
gustavatmel 1:9c5af431a1f1 586 *
gustavatmel 1:9c5af431a1f1 587 * <table>
gustavatmel 1:9c5af431a1f1 588 * <tr>
gustavatmel 1:9c5af431a1f1 589 * <th>Acronym</th>
gustavatmel 1:9c5af431a1f1 590 * <th>Definition</th>
gustavatmel 1:9c5af431a1f1 591 * </tr>
gustavatmel 1:9c5af431a1f1 592 * <tr>
gustavatmel 1:9c5af431a1f1 593 * <td>PM</td>
gustavatmel 1:9c5af431a1f1 594 * <td>Power Manager</td>
gustavatmel 1:9c5af431a1f1 595 * </tr>
gustavatmel 1:9c5af431a1f1 596 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 597 * <tr>
gustavatmel 1:9c5af431a1f1 598 * <td>SUPC</td>
gustavatmel 1:9c5af431a1f1 599 * <td>Supply Controller</td>
gustavatmel 1:9c5af431a1f1 600 * </tr>
gustavatmel 1:9c5af431a1f1 601 * <tr>
gustavatmel 1:9c5af431a1f1 602 * <td>RSTC</td>
gustavatmel 1:9c5af431a1f1 603 * <td>Reset Controller</td>
gustavatmel 1:9c5af431a1f1 604 * </tr>
gustavatmel 1:9c5af431a1f1 605 * \endif
gustavatmel 1:9c5af431a1f1 606 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 607 * <tr>
gustavatmel 1:9c5af431a1f1 608 * <td>SUPC</td>
gustavatmel 1:9c5af431a1f1 609 * <td>Supply Controller</td>
gustavatmel 1:9c5af431a1f1 610 * </tr>
gustavatmel 1:9c5af431a1f1 611 * <tr>
gustavatmel 1:9c5af431a1f1 612 * <td>RSTC</td>
gustavatmel 1:9c5af431a1f1 613 * <td>Reset Controller</td>
gustavatmel 1:9c5af431a1f1 614 * </tr>
gustavatmel 1:9c5af431a1f1 615 * \endif
gustavatmel 1:9c5af431a1f1 616 * \if DEVICE_SAMD21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 617 * <tr>
gustavatmel 1:9c5af431a1f1 618 * <td>SYSCTRL</td>
gustavatmel 1:9c5af431a1f1 619 * <td>System control interface</td>
gustavatmel 1:9c5af431a1f1 620 * </tr>
gustavatmel 1:9c5af431a1f1 621 * \endif
gustavatmel 1:9c5af431a1f1 622 * </table>
gustavatmel 1:9c5af431a1f1 623 *
gustavatmel 1:9c5af431a1f1 624 *
gustavatmel 1:9c5af431a1f1 625 * \section asfdoc_sam0_system_extra_dependencies Dependencies
gustavatmel 1:9c5af431a1f1 626 * This driver has the following dependencies:
gustavatmel 1:9c5af431a1f1 627 *
gustavatmel 1:9c5af431a1f1 628 * - None
gustavatmel 1:9c5af431a1f1 629 *
gustavatmel 1:9c5af431a1f1 630 *
gustavatmel 1:9c5af431a1f1 631 * \section asfdoc_sam0_system_extra_errata Errata
gustavatmel 1:9c5af431a1f1 632 * There are no errata related to this driver.
gustavatmel 1:9c5af431a1f1 633 *
gustavatmel 1:9c5af431a1f1 634 *
gustavatmel 1:9c5af431a1f1 635 * \section asfdoc_sam0_system_extra_history Module History
gustavatmel 1:9c5af431a1f1 636 * An overview of the module history is presented in the table below, with
gustavatmel 1:9c5af431a1f1 637 * details on the enhancements and fixes made to the module since its first
gustavatmel 1:9c5af431a1f1 638 * release. The current version of this corresponds to the newest version in
gustavatmel 1:9c5af431a1f1 639 * the table.
gustavatmel 1:9c5af431a1f1 640 *
gustavatmel 1:9c5af431a1f1 641 * <table>
gustavatmel 1:9c5af431a1f1 642 * <tr>
gustavatmel 1:9c5af431a1f1 643 * <th>Changelog</th>
gustavatmel 1:9c5af431a1f1 644 * </tr>
gustavatmel 1:9c5af431a1f1 645 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 646 * <tr>
gustavatmel 1:9c5af431a1f1 647 * <td>Initial Release</td>
gustavatmel 1:9c5af431a1f1 648 * </tr>
gustavatmel 1:9c5af431a1f1 649 * \endif
gustavatmel 1:9c5af431a1f1 650 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 651 * <tr>
gustavatmel 1:9c5af431a1f1 652 * <td>Initial Release</td>
gustavatmel 1:9c5af431a1f1 653 * </tr>
gustavatmel 1:9c5af431a1f1 654 * \endif
gustavatmel 1:9c5af431a1f1 655 * \if DEVICE_SAMD21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 656 * <tr>
gustavatmel 1:9c5af431a1f1 657 * <td>Added new \c system_reset() to reset the complete MCU with some exceptions</td>
gustavatmel 1:9c5af431a1f1 658 * </tr>
gustavatmel 1:9c5af431a1f1 659 * <tr>
gustavatmel 1:9c5af431a1f1 660 * <td>Added new \c system_get_device_id() function to retrieved the device
gustavatmel 1:9c5af431a1f1 661 * ID.</td>
gustavatmel 1:9c5af431a1f1 662 * </tr>
gustavatmel 1:9c5af431a1f1 663 * <tr>
gustavatmel 1:9c5af431a1f1 664 * <td>Initial Release</td>
gustavatmel 1:9c5af431a1f1 665 * </tr>
gustavatmel 1:9c5af431a1f1 666 * \endif
gustavatmel 1:9c5af431a1f1 667 * </table>
gustavatmel 1:9c5af431a1f1 668 *
gustavatmel 1:9c5af431a1f1 669 * \page asfdoc_sam0_system_document_revision_history Document Revision History
gustavatmel 1:9c5af431a1f1 670 *
gustavatmel 1:9c5af431a1f1 671 * <table>
gustavatmel 1:9c5af431a1f1 672 * <tr>
gustavatmel 1:9c5af431a1f1 673 * <th>Doc. Rev.</td>
gustavatmel 1:9c5af431a1f1 674 * <th>Date</td>
gustavatmel 1:9c5af431a1f1 675 * <th>Comments</td>
gustavatmel 1:9c5af431a1f1 676 * </tr>
gustavatmel 1:9c5af431a1f1 677 * \if DEVICE_SAML21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 678 * <tr>
gustavatmel 1:9c5af431a1f1 679 * <td>42449A</td>
gustavatmel 1:9c5af431a1f1 680 * <td>07/2015</td>
gustavatmel 1:9c5af431a1f1 681 * <td>Initial document release</td>
gustavatmel 1:9c5af431a1f1 682 * </tr>
gustavatmel 1:9c5af431a1f1 683 * \endif
gustavatmel 1:9c5af431a1f1 684 * \if DEVICE_SAMC21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 685 * <tr>
gustavatmel 1:9c5af431a1f1 686 * <td>42484A</td>
gustavatmel 1:9c5af431a1f1 687 * <td>08/2015</td>
gustavatmel 1:9c5af431a1f1 688 * <td>Initial document release.</td>
gustavatmel 1:9c5af431a1f1 689 * </tr>
gustavatmel 1:9c5af431a1f1 690 * \endif
gustavatmel 1:9c5af431a1f1 691 * \if DEVICE_SAMD21_SYSTEM_SUPPORT
gustavatmel 1:9c5af431a1f1 692 * <tr>
gustavatmel 1:9c5af431a1f1 693 * <td>42120E</td>
gustavatmel 1:9c5af431a1f1 694 * <td>04/2015</td>
gustavatmel 1:9c5af431a1f1 695 * <td>Added support for SAMDAx</td>
gustavatmel 1:9c5af431a1f1 696 * </tr>
gustavatmel 1:9c5af431a1f1 697 * <tr>
gustavatmel 1:9c5af431a1f1 698 * <td>42120D</td>
gustavatmel 1:9c5af431a1f1 699 * <td>12/2014</td>
gustavatmel 1:9c5af431a1f1 700 * <td>Added support for SAMR21 and SAMD10/D11</td>
gustavatmel 1:9c5af431a1f1 701 * </tr>
gustavatmel 1:9c5af431a1f1 702 * <tr>
gustavatmel 1:9c5af431a1f1 703 * <td>42120C</td>
gustavatmel 1:9c5af431a1f1 704 * <td>01/2014</td>
gustavatmel 1:9c5af431a1f1 705 * <td>Added support for SAMD21</td>
gustavatmel 1:9c5af431a1f1 706 * </tr>
gustavatmel 1:9c5af431a1f1 707 * <tr>
gustavatmel 1:9c5af431a1f1 708 * <td>42120B</td>
gustavatmel 1:9c5af431a1f1 709 * <td>06/2013</td>
gustavatmel 1:9c5af431a1f1 710 * <td>Corrected documentation typos</td>
gustavatmel 1:9c5af431a1f1 711 * </tr>
gustavatmel 1:9c5af431a1f1 712 * <tr>
gustavatmel 1:9c5af431a1f1 713 * <td>42120A</td>
gustavatmel 1:9c5af431a1f1 714 * <td>06/2013</td>
gustavatmel 1:9c5af431a1f1 715 * <td>Initial document release</td>
gustavatmel 1:9c5af431a1f1 716 * </tr>
gustavatmel 1:9c5af431a1f1 717 * \endif
gustavatmel 1:9c5af431a1f1 718 * </table>
gustavatmel 1:9c5af431a1f1 719 */
gustavatmel 1:9c5af431a1f1 720
gustavatmel 1:9c5af431a1f1 721 #ifdef __cplusplus
gustavatmel 1:9c5af431a1f1 722 }
gustavatmel 1:9c5af431a1f1 723 #endif
gustavatmel 1:9c5af431a1f1 724
gustavatmel 1:9c5af431a1f1 725 #endif /* SYSTEM_H_INCLUDED */
gustavatmel 1:9c5af431a1f1 726