123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678 |
- /**
- * \file
- *
- * \brief SAM Operational Amplifier Controller (OPAMP) Driver
- *
- * Copyright (C) 2014-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. The name of Atmel may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- * Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * \asf_license_stop
- *
- */
- /*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
- */
- #ifndef OPAMP_H_INCLUDED
- #define OPAMP_H_INCLUDED
- /**
- * \defgroup asfdoc_sam0_opamp_group SAM Operational Amplifier Controller (OPAMP) Driver
- *
- * This driver for Atmel® | SMART ARM®-based microcontrollers provides an interface for the configuration
- * and management of the device's Operational Amplifier Controller functionality.
- *
- * The following peripheral is used by this module:
- * - OPAMP (Operational Amplifier Controller)
- *
- * The following devices can use this module:
- * - Atmel | SMART SAM L21
- *
- * The outline of this documentation is as follows:
- * - \ref asfdoc_sam0_opamp_prerequisites
- * - \ref asfdoc_sam0_opamp_module_overview
- * - \ref asfdoc_sam0_opamp_special_considerations
- * - \ref asfdoc_sam0_opamp_extra_info
- * - \ref asfdoc_sam0_opamp_examples
- * - \ref asfdoc_sam0_opamp_api_overview
- *
- *
- * \section asfdoc_sam0_opamp_prerequisites Prerequisites
- *
- * There are no prerequisites for this module.
- *
- *
- * \section asfdoc_sam0_opamp_module_overview Module Overview
- *
- * The OPAMP is an individually configurable low power, general purpose operational
- * amplifier offering a high degree of flexibility and rail-to-rail inputs.
- *
- * Each operational amplifier can be configured in standalone operational amplifier
- * and operational amplifier with built-in feedback. All OPAMPs can be cascaded
- * to support circuits such as differential amplifiers.
- * \note For more detail configuration reference, refer to the "Built-in Modes"
- * section in the device datasheet.
- *
- * Each OPAMP has one positive and one negative input which can be flexible chosen
- * from analog input pins including the output of another OPAMP, internal inputs
- * such as the DAC or the resistor ladder, and the ground.
- *
- * Each OPAMP output can be selected as input for AC or ADC, also available
- * on I/O pins.
- *
- * Four modes are available to select the trade-off between speed and power
- * consumption to best fit the application requirements and optimize the power
- * consumption.
- *
- * \section asfdoc_sam0_opamp_special_considerations Special Considerations
- *
- * There are no special considerations for this module.
- *
- *
- * \section asfdoc_sam0_opamp_extra_info Extra Information
- *
- * For extra information, see \ref asfdoc_sam0_opamp_extra. This includes:
- * - \ref asfdoc_sam0_opamp_extra_acronyms
- * - \ref asfdoc_sam0_opamp_extra_dependencies
- * - \ref asfdoc_sam0_opamp_extra_errata
- * - \ref asfdoc_sam0_opamp_extra_history
- *
- *
- * \section asfdoc_sam0_opamp_examples Examples
- *
- * For a list of examples related to this driver, see
- * \ref asfdoc_sam0_opamp_exqsg.
- *
- *
- * \section asfdoc_sam0_opamp_api_overview API Overview
- * @{
- */
- #include <compiler.h>
- #include <system.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * \brief OPAMP ID number enum.
- */
- enum opamp_id {
- /** OPAMP 0 */
- OPAMP_0 = 0,
- /** OPAMP 1 */
- OPAMP_1 = 1,
- /** OPAMP 2 */
- OPAMP_2 = 2,
- /** OPAMP number */
- OPAMP_NUM,
- };
- /**
- * \brief Negative input MUX selection configuration enum.
- *
- * Enum for the negative input of OPAMP0.
- */
- enum opamp0_neg_mux {
- /** Negative I/O pin 0 */
- OPAMP0_NEG_MUX_PIN0 = OPAMP_OPAMPCTRL_MUXNEG(0),
- /** Resistor ladder 0 taps */
- OPAMP0_NEG_MUX_TAP0 = OPAMP_OPAMPCTRL_MUXNEG(1),
- /** OPAMP output */
- OPAMP0_NEG_MUX_OUT0 = OPAMP_OPAMPCTRL_MUXNEG(2),
- /** DAC output */
- OPAMP0_NEG_MUX_DAC = OPAMP_OPAMPCTRL_MUXNEG(3),
- };
- /**
- * \brief Negative input MUX selection configuration enum.
- *
- * Enum for the negative input of OPAMP1.
- */
- enum opamp1_neg_mux {
- /** Negative I/O pin 1 */
- OPAMP1_NEG_MUX_PIN1 = OPAMP_OPAMPCTRL_MUXNEG(0),
- /** Resistor ladder 1 taps */
- OPAMP1_NEG_MUX_TAP1 = OPAMP_OPAMPCTRL_MUXNEG(1),
- /** OPAMP output */
- OPAMP1_NEG_MUX_OUT1 = OPAMP_OPAMPCTRL_MUXNEG(2),
- /** DAC output */
- OPAMP1_NEG_MUX_DAC = OPAMP_OPAMPCTRL_MUXNEG(3),
- };
- /**
- * \brief Negative input MUX selection configuration enum.
- *
- * Enum for the negative input of OPAMP2.
- */
- enum opamp2_neg_mux {
- /** Negative I/O pin 2 */
- OPAMP2_NEG_MUX_PIN2 = OPAMP_OPAMPCTRL_MUXNEG(0),
- /** Resistor ladder 2 taps */
- OPAMP2_NEG_MUX_TAP2 = OPAMP_OPAMPCTRL_MUXNEG(1),
- /** OPAMP output */
- OPAMP2_NEG_MUX_OUT2 = OPAMP_OPAMPCTRL_MUXNEG(2),
- /** Negative I/O pin 0 */
- OPAMP2_NEG_MUX_PIN0 = OPAMP_OPAMPCTRL_MUXNEG(3),
- /** Negative I/O pin 1 */
- OPAMP2_NEG_MUX_PIN1 = OPAMP_OPAMPCTRL_MUXNEG(4),
- /** DAC output */
- OPAMP2_NEG_MUX_DAC = OPAMP_OPAMPCTRL_MUXNEG(5),
- };
- /**
- * \brief Positive input MUX selection configuration enum.
- *
- * Enum for the positive input of OPAMP0.
- */
- enum opamp0_pos_mux {
- /** Positive I/O pin 0 */
- OPAMP0_POS_MUX_PIN0 = OPAMP_OPAMPCTRL_MUXPOS(0),
- /** Resistor ladder 0 taps */
- OPAMP0_POS_MUX_TAP0 = OPAMP_OPAMPCTRL_MUXPOS(1),
- /** DAC output */
- OPAMP0_POS_MUX_DAC = OPAMP_OPAMPCTRL_MUXPOS(2),
- /** Ground */
- OPAMP0_POS_MUX_GND = OPAMP_OPAMPCTRL_MUXPOS(3),
- };
- /**
- * \brief Positive input MUX selection configuration enum.
- *
- * Enum for the positive input of OPAMP1.
- */
- enum opamp1_pos_mux {
- /** Positive I/O pin 1 */
- OPAMP1_POS_MUX_PIN1 = OPAMP_OPAMPCTRL_MUXPOS(0),
- /** Resistor ladder 1 taps */
- OPAMP1_POS_MUX_TAP1 = OPAMP_OPAMPCTRL_MUXPOS(1),
- /** OPAMP0 output */
- OPAMP1_POS_MUX_OUT0 = OPAMP_OPAMPCTRL_MUXPOS(2),
- /** Ground */
- OPAMP1_POS_MUX_GND = OPAMP_OPAMPCTRL_MUXPOS(3),
- };
- /**
- * \brief Positive input MUX selection configuration enum.
- *
- * Enum for the positive input of OPAMP2.
- */
- enum opamp2_pos_mux {
- /** Positive I/O pin 2 */
- OPAMP2_POS_MUX_PIN2 = OPAMP_OPAMPCTRL_MUXPOS(0),
- /** Resistor ladder 2 taps */
- OPAMP2_POS_MUX_TAP2 = OPAMP_OPAMPCTRL_MUXPOS(1),
- /** OPAMP1 output */
- OPAMP2_POS_MUX_OUT1 = OPAMP_OPAMPCTRL_MUXPOS(2),
- /** Ground */
- OPAMP2_POS_MUX_GND = OPAMP_OPAMPCTRL_MUXPOS(3),
- /** Positive I/O pin 0 */
- OPAMP2_POS_MUX_PIN0 = OPAMP_OPAMPCTRL_MUXPOS(4),
- /** Positive I/O pin 1 */
- OPAMP2_POS_MUX_PIN1 = OPAMP_OPAMPCTRL_MUXPOS(5),
- /** Resistor ladder 0 taps */
- OPAMP2_POS_MUX_TAP0 = OPAMP_OPAMPCTRL_MUXPOS(6),
- };
- /**
- * \brief Potentiometer selection MUX configuration enum.
- *
- * Enum for the potentiometer selection of OPAMP 0 to 2.
- */
- enum opamp_pot_mux {
- /** Gain = R2/R1 = 1/7 */
- OPAMP_POT_MUX_14R_2R = OPAMP_OPAMPCTRL_POTMUX(0),
- /** Gain = R2/R1 = 1/3 */
- OPAMP_POT_MUX_12R_4R = OPAMP_OPAMPCTRL_POTMUX(1),
- /** Gain = R2/R1 = 1 */
- OPAMP_POT_MUX_8R_8R = OPAMP_OPAMPCTRL_POTMUX(2),
- /** Gain = R2/R1 = 1 + 2/3 */
- OPAMP_POT_MUX_6R_10R = OPAMP_OPAMPCTRL_POTMUX(3),
- /** Gain = R2/R1 = 3 */
- OPAMP_POT_MUX_4R_12R = OPAMP_OPAMPCTRL_POTMUX(4),
- /** Gain = R2/R1 = 4 + 1/3 */
- OPAMP_POT_MUX_3R_13R = OPAMP_OPAMPCTRL_POTMUX(5),
- /** Gain = R2/R1 = 7 */
- OPAMP_POT_MUX_2R_14R = OPAMP_OPAMPCTRL_POTMUX(6),
- /** Gain = R2/R1 = 15 */
- OPAMP_POT_MUX_R_15R = OPAMP_OPAMPCTRL_POTMUX(7),
- };
- /**
- * \brief Resistor 1 MUX selection configuration enum.
- *
- * Enum for the Resistor 1 of OPAMP0.
- */
- enum opamp0_res1_mux {
- /** Positive input of OPAMP0 */
- OPAMP0_RES1_MUX_POS_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(0),
- /** Negative input of OPAMP0 */
- OPAMP0_RES1_MUX_NEG_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(1),
- /** DAC output */
- OPAMP0_RES1_MUX_DAC = OPAMP_OPAMPCTRL_RES1MUX(2),
- /** Ground */
- OPAMP0_RES1_MUX_GND = OPAMP_OPAMPCTRL_RES1MUX(3),
- };
- /**
- * \brief Resistor 1 MUX selection configuration enum.
- *
- * Enum for the Resistor 1 of OPAMP1.
- */
- enum opamp1_res1_mux {
- /** Positive input of OPAMP1 */
- OPAMP1_RES1_MUX_POS_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(0),
- /** Negative input of OPAMP1 */
- OPAMP1_RES1_MUX_NEG_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(1),
- /** OPAMP0 output */
- OPAMP1_RES1_MUX_OUT0 = OPAMP_OPAMPCTRL_RES1MUX(2),
- /** Ground */
- OPAMP1_RES1_MUX_GND = OPAMP_OPAMPCTRL_RES1MUX(3),
- };
- /**
- * \brief Resistor 1 MUX selection configuration enum.
- *
- * Enum for the Resistor 1 of OPAMP2.
- */
- enum opamp2_res1_mux {
- /** Positive input of OPAMP2 */
- OPAMP2_RES1_MUX_POS_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(0),
- /** Negative input of OPAMP2 */
- OPAMP2_RES1_MUX_NEG_PIN0 = OPAMP_OPAMPCTRL_RES1MUX(1),
- /** OPAMP1 output */
- OPAMP2_RES1_MUX_OUT1 = OPAMP_OPAMPCTRL_RES1MUX(2),
- /** Ground */
- OPAMP2_RES1_MUX_GND = OPAMP_OPAMPCTRL_RES1MUX(3),
- };
- /**
- * \brief Bias mode selection MUX configuration enum.
- *
- * Enum for the Bias mode selection of OPAMP 0 to 2.
- */
- enum opamp_bias_selection {
- /** Minimum current consumption but the slowest mode */
- OPAMP_BIAS_MODE_0 = OPAMP_OPAMPCTRL_BIAS(0),
- /** Low current consumption, slow speed */
- OPAMP_BIAS_MODE_1 = OPAMP_OPAMPCTRL_BIAS(1),
- /** High current consumption, fast speed */
- OPAMP_BIAS_MODE_2 = OPAMP_OPAMPCTRL_BIAS(2),
- /** Maximum current consumption but the fastest mode */
- OPAMP_BIAS_MODE_3 = OPAMP_OPAMPCTRL_BIAS(3),
- };
- /**
- * \brief OPAMP 0 to 2 common configuration structure.
- *
- * Common configuration structure for OPAMP 0 to 2.
- */
- struct opamp_config_common {
- /** Potentiometer selection */
- enum opamp_pot_mux potentiometer_selection;
- /** If \c true, R1 connected to RES1MUX */
- bool r1_enable;
- /** If \c true, resistor ladder to V<SUB>CC</SUB> */
- bool r2_vcc;
- /** If \c true, resistor ladder to output */
- bool r2_out;
- /** If \c true, the OPAMPx is enabled when a peripheral is requesting
- * the OPAMPx to be used as an input. The OPAMPx is
- * disabled if no peripheral is requesting it as an input. */
- bool on_demand;
- /** If \c true, the OPAMPx is not stopped during sleep
- * mode when triggered */
- bool run_in_standby;
- /** Bias mode selection */
- enum opamp_bias_selection bias_value;
- /** If \c true, OPAMP output is connected to the ADC or AC input */
- bool analog_out;
- };
- /**
- * \brief OPAMP 0 configuration structure.
- *
- * Configuration structure for OPAMP 0.
- */
- struct opamp0_config {
- /** Negative input MUX selection */
- enum opamp0_neg_mux negative_input;
- /** Positive input MUX selection */
- enum opamp0_pos_mux positive_input;
- /** Resistor 1 MUX selection */
- enum opamp0_res1_mux r1_connection;
- /** If \c true, the comparator will continue to sample during sleep
- * mode when triggered */
- struct opamp_config_common config_common;
- };
- /**
- * \brief OPAMP 1 configuration structure.
- *
- * Configuration structure for OPAMP 1.
- */
- struct opamp1_config {
- /** Negative input MUX selection */
- enum opamp1_neg_mux negative_input;
- /** Positive input MUX selection */
- enum opamp1_pos_mux positive_input;
- /** Resistor 1 MUX selection */
- enum opamp1_res1_mux r1_connection;
- /** If \c true, the comparator will continue to sample during sleep
- * mode when triggered */
- struct opamp_config_common config_common;
- };
- /**
- * \brief OPAMP 2 configuration structure.
- *
- * Configuration structure for OPAMP 2.
- */
- struct opamp2_config {
- /** Negative input MUX selection */
- enum opamp2_neg_mux negative_input;
- /** Positive input MUX selection */
- enum opamp2_pos_mux positive_input;
- /** Resistor 1 MUX selection */
- enum opamp2_res1_mux r1_connection;
- /** If \c true, the comparator will continue to sample during sleep
- * mode when triggered */
- struct opamp_config_common config_common;
- };
- /**
- * \brief Initializes OPAMP module.
- *
- * Resets all registers in the MODULE to their initial state,
- * and then enable the module.
- */
- void opamp_module_init(void);
- /**
- * \brief Resets OPAMP module.
- *
- * Resets all registers in the MODULE to their initial state,
- * and the OPAMP will be disabled.
- */
- static inline void opamp_module_reset(void)
- {
- /* Reset OPAMP. */
- OPAMP->CTRLA.reg |= OPAMP_CTRLA_SWRST;
- }
- /**
- * \brief Enables OPAMP module.
- *
- * Enable the peripheral. Each OPAMP must also be enabled individually
- * by the Enable bit in the corresponding OPAMP Control register.
- *
- */
- static inline void opamp_module_enable(void)
- {
- /* Enable OPAMP. */
- OPAMP->CTRLA.reg |= OPAMP_CTRLA_ENABLE;
- }
- /**
- * \brief Disables OPAMP module.
- *
- * Disables the peripheral.
- */
- static inline void opamp_module_disable(void)
- {
- /* Disable OPAMP. */
- OPAMP->CTRLA.reg &= ~OPAMP_CTRLA_ENABLE;
- }
- /**
- * \brief Enables OPAMP voltage doubler.
- *
- * The analog input MUXes have low resistance, but consume more
- * power at lower voltages (e.g., driven by the voltage doubler).
- *
- */
- static inline void opamp_voltage_doubler_enable(void)
- {
- struct system_clock_source_osculp32k_config config;
- /* Enable the OSCULP32K clock. */
- system_clock_source_osculp32k_get_config_defaults(&config);
- system_clock_source_osculp32k_set_config(&config);
- /* Enable Voltage Doubler. */
- OPAMP->CTRLA.reg &= ~ OPAMP_CTRLA_LPMUX;
- }
- /**
- * \brief Disables OPAMP voltage doubler.
- *
- * The analog input MUXes have high resistance, but consume less power
- * at lower voltages (e.g., the voltage doubler is disabled).
- */
- static inline void opamp_voltage_doubler_disable(void)
- {
- /* Disable Voltage Doubler. */
- OPAMP->CTRLA.reg |= OPAMP_CTRLA_LPMUX;
- }
- /**
- * \brief Initializes all members of OPAMP0 configuration
- * structure to safe defaults.
- *
- * Initializes all members of OPAMP0 configuration
- * structure to safe defaults. This function should be called on all new
- * instances of these configuration structures before being modified by the
- * user application.
- *
- * The default configuration is setting OPAMP0 as "Voltage Follower", refer to
- * the first mode of "Built-in Modes" in the device datasheet.
- *
- * \param[out] config OPAMP0 configuration structure to initialize to
- * default values
- */
- void opamp0_get_config_defaults(struct opamp0_config *const config);
- /**
- * \brief Initializes all members of OPAMP1 configuration
- * structure to safe defaults.
- *
- * Initializes all members of OPAMP1 configuration
- * structure to safe defaults. This function should be called on all new
- * instances of these configuration structures before being modified by the
- * user application.
- *
- * The default configuration is setting OPAMP1 as "Voltage Follower", refer to
- * the first mode of "Built-in Modes" in the device datasheet.
- *
- * \param[out] config OPAMP1 configuration structure to initialize to
- * default values
- */
- void opamp1_get_config_defaults(struct opamp1_config *const config);
- /**
- * \brief Initializes all members of OPAMP2 configuration
- * structure to safe defaults.
- *
- * Initializes all members of OPAMP2 configuration
- * structure to safe defaults. This function should be called on all new
- * instances of these configuration structures before being modified by the
- * user application.
- *
- * The default configuration is setting OPAMP2 as "Voltage Follower", refer to
- * the first mode of "Built-in Modes" in the device datasheet.
- *
- * \param[out] config OPAMP2 configuration structure to initialize to
- * default values
- */
- void opamp2_get_config_defaults(struct opamp2_config *const config);
- /** \brief Writes OPAMP0 configuration to the hardware module.
- *
- * Writes a given OPAMP0 configuration to the hardware module.
- *
- * \param[in] config Pointer to the OPAMP0 configuration struct
- */
- void opamp0_set_config(struct opamp0_config *const config);
- /** \brief Writes OPAMP1 configuration to the hardware module.
- *
- * Writes a given OPAMP1 configuration to the hardware module.
- *
- * \param[in] config Pointer to the OPAMP1 configuration struct
- */
- void opamp1_set_config(struct opamp1_config *const config);
- /** \brief Writes OPAMP2 configuration to the hardware module.
- *
- * Writes a given OPAMP2 configuration to the hardware module.
- *
- * \param[in] config Pointer to the OPAMP2 configuration struct
- */
- void opamp2_set_config(struct opamp2_config *const config);
- /**
- * \brief Enables an OPAMP that was previously configured.
- *
- * Enables an OPAMP that was previously configured via a call to
- * the set configuration function.
- *
- * \param[in] number OPAMP number to enable
- */
- void opamp_enable(const enum opamp_id number);
- /**
- * \brief Disables an OPAMP that was previously enabled.
- *
- * Disables an OPAMP that was previously enabled via a call to
- * \ref opamp_enable().
- *
- * \param[in] number OPAMP number to disable
- */
- void opamp_disable(const enum opamp_id number);
- /**
- * \brief Checks an OPAMP output ready status.
- *
- * Checks if an OPAMP output is ready.
- *
- * \param[in] number OPAMP number to check
- *
- * \return Ready status of the select OPAMP.
- *
- * \retval false If the select OPAMP output is not ready
- * \retval ture If the select OPAMP output is ready
- */
- bool opamp_is_ready(const enum opamp_id number);
- #ifdef __cplusplus
- }
- #endif
- /** @} */
- /**
- * \page asfdoc_sam0_opamp_extra Extra Information for OPAMP Driver
- *
- * \section asfdoc_sam0_opamp_extra_acronyms Acronyms
- * Below is a table listing the acronyms used in this module, along with their
- * intended meanings.
- *
- * <table>
- * <tr>
- * <th>Acronym</th>
- * <th>Description</th>
- * </tr>
- * <tr>
- * <td>OPAMP</td>
- * <td>Operational Amplifier Controller</td>
- * </tr>
- * </table>
- *
- *
- * \section asfdoc_sam0_opamp_extra_dependencies Dependencies
- * This driver has no dependencies.
- *
- *
- * \section asfdoc_sam0_opamp_extra_errata Errata
- * There are no errata related to this driver.
- *
- *
- * \section asfdoc_sam0_opamp_extra_history Module History
- * An overview of the module history is presented in the table below, with
- * details on the enhancements and fixes made to the module since its first
- * release. The current version of this corresponds to the newest version in
- * the table.
- *
- * <table>
- * <tr>
- * <th>Changelog</th>
- * </tr>
- * <tr>
- * <td>Initial Release</td>
- * </tr>
- * </table>
- */
- /**
- * \page asfdoc_sam0_opamp_exqsg Examples for OPAMP Driver
- *
- * This is a list of the available Quick Start guides (QSGs) and example
- * applications for \ref asfdoc_sam0_opamp_group. QSGs are simple examples with
- * step-by-step instructions to configure and use this driver in a selection of
- * use cases. Note that a QSG can be compiled as a standalone application or be
- * added to the user application.
- *
- * - \subpage asfdoc_sam0_opamp_basic_use_case
- *
- * \page asfdoc_sam0_opamp_document_revision_history Document Revision History
- *
- * <table>
- * <tr>
- * <th>Doc. Rev.</td>
- * <th>Date</td>
- * <th>Comments</td>
- * </tr>
- * <tr>
- * <td>42446A</td>
- * <td>07/2015</td>
- * <td>Initial document release</td>
- * </tr>
- * </table>
- */
- #endif /* OPAMP_H_INCLUDED */
|