/* ---------------------------------------------------------------------------- | |
* SAM Software Package License | |
* ---------------------------------------------------------------------------- | |
* Copyright (c) 2015, Atmel Corporation | |
* | |
* All rights reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are met: | |
* | |
* - Redistributions of source code must retain the above copyright notice, | |
* this list of conditions and the disclaimer below. | |
* | |
* Atmel's name may not be used to endorse or promote products derived from | |
* this software without specific prior written permission. | |
* | |
* DISCLAIMER: 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 | |
* 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. | |
* ---------------------------------------------------------------------------- | |
*/ | |
/** | |
* \file | |
* | |
* Implementation of Analog Comparator Controller (ACC). | |
* | |
*/ | |
#ifndef _ACC_H | |
#define _ACC_H | |
/*---------------------------------------------------------------------------- | |
* Headers | |
*----------------------------------------------------------------------------*/ | |
#include "chip.h" | |
#include <stdint.h> | |
/*---------------------------------------------------------------------------- | |
* Global functions | |
*----------------------------------------------------------------------------*/ | |
/** | |
* \brief Initialize the Analog Comparator Controller. | |
* \param p_acc Pointer to an Acc instance. | |
* \param select_plus Input connected to inp, 0~7. | |
* \param select_minus Input connected to inm, 0~7. | |
* \param edge_type CF flag triggering mode | |
* Use pattern defined in the device header file. | |
* \param invert Invert comparator output. | |
*/ | |
extern void acc_init(Acc *p_acc, uint32_t select_plus, uint32_t select_minus, | |
uint32_t edge_type, uint32_t invert); | |
/** | |
* \brief Enable the ACC. | |
* \param p_acc Pointer to ACC registers set instance. | |
*/ | |
extern void acc_enable(Acc *p_acc); | |
/** | |
* \brief Disable the ACC. | |
* \param p_acc Pointer to ACC registers set instance. | |
*/ | |
extern void acc_disable(Acc *p_acc); | |
/** | |
* \brief Reset the ACC. | |
* \param p_acc Pointer to ACC registers set instance. | |
*/ | |
extern void acc_reset(Acc *p_acc); | |
/** | |
* \brief Set the input source. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \param select_minus Selection for minus comparator input. | |
* \param select_plus Selection for plus comparator input. | |
*/ | |
extern void acc_set_input(Acc *p_acc, uint32_t select_minus, | |
uint32_t select_plus); | |
/** | |
* \brief Set the output of the ACC. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \param invert Invert comparator output, 0 for disable, 1 for enable. | |
* \param fault_enable Fault enable, 0 for disable, 1 for enable. | |
* \param fault_source Selection of fault source, 0 for CF, 1 for output. | |
*/ | |
extern void acc_set_output(Acc *p_acc, uint32_t invert, uint32_t fault_enable, | |
uint32_t fault_source); | |
/** | |
* \brief Get the comparison result. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \return Result of the comparison, 0 for inn > inp, 1 for inp > inn. | |
*/ | |
extern uint32_t acc_get_comparison_result(Acc *p_acc); | |
/** | |
* \brief Enable the interrupt. | |
* \param p_acc Pointer to ACC registers set instance. | |
*/ | |
extern void acc_enable_interrupt(Acc *p_acc); | |
/** | |
* \brief Disable the interrupt. | |
* \param p_acc Pointer to ACC registers set instance. | |
*/ | |
extern void acc_disable_interrupt(Acc *p_acc); | |
/** | |
* \brief Get the interrupt status. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \return Contents of the Interrupt Status Register. | |
*/ | |
extern uint32_t acc_get_interrupt_status(Acc *p_acc); | |
/** | |
* \brief Write-protect the Mode Register and the Analog Control Register. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \param enable 1 to enable, 0 to disable. | |
*/ | |
extern void acc_set_write_protect(Acc *p_acc, uint32_t enable); | |
/** | |
* \brief Return write protect status. | |
* \param p_acc Pointer to ACC registers set instance. | |
* \retval 0 No write protection violation occurred. | |
* \retval 1 At least one write attempt to a write-protected register has been | |
* detected, since the previous call to this function. | |
*/ | |
extern uint32_t acc_get_write_protect_status(Acc *p_acc); | |
#endif /* _ACC_H */ |