ChibiOS/RT Architecture - Reference Manual - Guides |
00001 /* 00002 ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010 Giovanni Di Sirio. 00003 00004 This file is part of ChibiOS/RT. 00005 00006 ChibiOS/RT is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 ChibiOS/RT is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program. If not, see <http://www.gnu.org/licenses/>. 00018 00019 --- 00020 00021 A special exception to the GPL can be applied should you wish to distribute 00022 a combined work that includes ChibiOS/RT, without being obliged to provide 00023 the source code for any proprietary components. See the file exception.txt 00024 for full details of how and when the exception can be applied. 00025 */ 00026 00027 /** 00028 * @file adc.h 00029 * @brief ADC Driver macros and structures. 00030 * 00031 * @addtogroup ADC 00032 * @{ 00033 */ 00034 00035 #ifndef _ADC_H_ 00036 #define _ADC_H_ 00037 00038 #if CH_HAL_USE_ADC || defined(__DOXYGEN__) 00039 00040 /*===========================================================================*/ 00041 /* Driver constants. */ 00042 /*===========================================================================*/ 00043 00044 /*===========================================================================*/ 00045 /* Driver pre-compile time settings. */ 00046 /*===========================================================================*/ 00047 00048 /*===========================================================================*/ 00049 /* Derived constants and error checks. */ 00050 /*===========================================================================*/ 00051 00052 #if !CH_USE_SEMAPHORES 00053 #error "ADC driver requires CH_USE_SEMAPHORES" 00054 #endif 00055 00056 /*===========================================================================*/ 00057 /* Driver data structures and types. */ 00058 /*===========================================================================*/ 00059 00060 /** 00061 * @brief Driver state machine possible states. 00062 */ 00063 typedef enum { 00064 ADC_UNINIT = 0, /**< @brief Not initialized. */ 00065 ADC_STOP = 1, /**< @brief Stopped. */ 00066 ADC_READY = 2, /**< @brief Ready. */ 00067 ADC_RUNNING = 3, /**< @brief Conversion running. */ 00068 ADC_COMPLETE = 4 /**< @brief Conversion complete.*/ 00069 } adcstate_t; 00070 00071 #include "adc_lld.h" 00072 00073 /*===========================================================================*/ 00074 /* Driver macros. */ 00075 /*===========================================================================*/ 00076 00077 /*===========================================================================*/ 00078 /* External declarations. */ 00079 /*===========================================================================*/ 00080 00081 #ifdef __cplusplus 00082 extern "C" { 00083 #endif 00084 void adcInit(void); 00085 void adcObjectInit(ADCDriver *adcp); 00086 void adcStart(ADCDriver *adcp, const ADCConfig *config); 00087 void adcStop(ADCDriver *adcp); 00088 bool_t adcStartConversion(ADCDriver *adcp, 00089 const ADCConversionGroup *grpp, 00090 adcsample_t *samples, 00091 size_t depth, 00092 adccallback_t callback); 00093 void adcStopConversion(ADCDriver *adcp); 00094 msg_t adcWaitConversion(ADCDriver *adcp, systime_t timeout); 00095 #ifdef __cplusplus 00096 } 00097 #endif 00098 00099 #endif /* CH_HAL_USE_ADC */ 00100 00101 #endif /* _ADC_H_ */ 00102 00103 /** @} */