ADC_MEASUREMENT: ADC_MEASUREMENT.h Source File

ADC MEASUREMENT

ADC_MEASUREMENT
ADC_MEASUREMENT.h
Go to the documentation of this file.
00001 
00089 /*CODE_BLOCK_BEGIN*/
00090 #ifndef ADC_MEASUREMENT_H
00091 #define ADC_MEASUREMENT_H
00092 
00093 
00094 /***********************************************************************************************************************
00095  * HEADER FILES
00096  **********************************************************************************************************************/
00097 
00098 #include "GLOBAL_ADC/global_adc.h"
00099 #include "adc_measurement_conf.h"
00100 
00101  /**********************************************************************************************************************
00102  * MACROS
00103  **********************************************************************************************************************/
00104 #if (!((XMC_LIB_MAJOR_VERSION == 2U) && \
00105        (XMC_LIB_MINOR_VERSION >= 0U) && \
00106        (XMC_LIB_PATCH_VERSION >= 0U)))
00107 #error "ADC_MEASUREMENT requires XMC Peripheral Library v2.0.0 or higher"
00108 #endif
00109 
00110 #if defined (__GNUC__) || defined (__CC_ARM)
00111 #define ADC_MEASUREMENT_DEPRECATED   __attribute__((deprecated))
00112 #else
00113 #define ADC_MEASUREMENT_DEPRECATED
00114 #endif
00115 
00116 #define ADC_MEASUREMENT_MODULE_PTR ((XMC_VADC_GLOBAL_t *) (void *) VADC)
00117 
00118  /**********************************************************************************************************************
00119  * ENUMS
00120  **********************************************************************************************************************/
00127 typedef enum ADC_MEASUREMENT_STATUS
00128 {
00129   ADC_MEASUREMENT_STATUS_SUCCESS = 0, 
00130   ADC_MEASUREMENT_STATUS_FAILURE, 
00131   ADC_MEASUREMENT_STATUS_UNINITIALIZED 
00132 } ADC_MEASUREMENT_STATUS_t;
00137 /**********************************************************************************************************************
00138 * DATA STRUCTURES
00139 **********************************************************************************************************************/
00145 typedef void (*ADC_MEASUREMENT_MUX_CONFIG_t)(void); 
00150 typedef struct ADC_MEASUREMENT_ISR
00151 {
00152   uint32_t node_id;             
00154   uint32_t priority;            
00155 #if(UC_FAMILY == XMC4)
00156   uint32_t sub_priority;        
00157 #endif
00158 #ifdef ADC_MEASUREMENT_NON_DEFAULT_IRQ_SOURCE_SELECTED
00159   uint8_t irqctrl;           
00160 #endif
00161 } ADC_MEASUREMENT_ISR_t;
00162 
00166 typedef struct ADC_MEASUREMENT_CHANNEL
00167 {
00168 #if( XMC_VADC_GROUP_AVAILABLE == 1U)
00169   XMC_VADC_CHANNEL_CONFIG_t *ch_handle; 
00171   XMC_VADC_RESULT_CONFIG_t *res_handle; 
00172 #endif
00173 
00174 #if( XMC_VADC_GROUP_AVAILABLE == 1U)
00175   XMC_VADC_GROUP_t *group_handle;               
00176 #endif
00177 
00178 #ifdef ADC_MEASUREMENT_ANALOG_IO_USED
00179   ANALOG_IO_t   *analog_io_config;    
00180 #endif
00181 
00182   uint8_t group_index;                                  
00184   uint8_t ch_num;                                               
00186 } ADC_MEASUREMENT_CHANNEL_t;
00187 
00191 typedef struct ADC_MEASUREMENT_CHANNEL_ARRAY
00192 {
00193   const ADC_MEASUREMENT_CHANNEL_t *const channel_array[ADC_MEASUREMENT_MAXCHANNELS]; 
00195 #if( XMC_VADC_GROUP_AVAILABLE == 0U)
00196   XMC_VADC_RESULT_CONFIG_t *res_handle; 
00197 #endif
00198 } ADC_MEASUREMENT_CHANNEL_ARRAY_t;
00199 
00203 typedef struct ADC_MEASUREMENT
00204 {
00205   const ADC_MEASUREMENT_CHANNEL_ARRAY_t *const array;            
00207   const XMC_VADC_BACKGROUND_CONFIG_t *const backgnd_config_handle; 
00210   const XMC_VADC_GLOBAL_CLASS_t *const iclass_config_handle;  
00212   GLOBAL_ADC_t *const global_handle;                                             
00214 #if (UC_SERIES != XMC11)
00215   const ADC_MEASUREMENT_ISR_t *const req_src_intr_handle;        
00216 #else
00217   const ADC_MEASUREMENT_ISR_t *const result_intr_handle;         
00218 #endif
00219 
00220   ADC_MEASUREMENT_MUX_CONFIG_t mux_config; 
00222   ADC_MEASUREMENT_STATUS_t init_state;    
00224   const XMC_VADC_SR_t srv_req_node;       
00226   const bool start_conversion;                    
00227 } ADC_MEASUREMENT_t;
00228 
00233 #ifdef __cplusplus
00234 extern "C" {
00235 #endif
00236 
00237 /***********************************************************************************************************************
00238  * API Prototypes
00239  **********************************************************************************************************************/
00279 DAVE_APP_VERSION_t ADC_MEASUREMENT_GetAppVersion(void);
00280 
00304 ADC_MEASUREMENT_STATUS_t ADC_MEASUREMENT_Init(ADC_MEASUREMENT_t *const handle_ptr);
00305 
00341 void ADC_MEASUREMENT_StartConversion(ADC_MEASUREMENT_t *const handle_ptr);
00342 
00343 #if(XMC_VADC_GROUP_AVAILABLE == 1U)
00344 
00384 XMC_VADC_RESULT_SIZE_t ADC_MEASUREMENT_GetResult(ADC_MEASUREMENT_CHANNEL_t *const handle_ptr);
00385 
00443 uint32_t ADC_MEASUREMENT_GetDetailedResult(ADC_MEASUREMENT_CHANNEL_t *const handle_ptr);
00444 
00445 #else /* Applicable for XMC1100 devices*/
00446 
00492 XMC_VADC_RESULT_SIZE_t ADC_MEASUREMENT_GetResult(ADC_MEASUREMENT_t *const handle_ptr) ADC_MEASUREMENT_DEPRECATED;
00493 
00566 uint32_t ADC_MEASUREMENT_GetDetailedResult(ADC_MEASUREMENT_t *const handle_ptr) ADC_MEASUREMENT_DEPRECATED;
00567 
00614 __STATIC_INLINE XMC_VADC_RESULT_SIZE_t  ADC_MEASUREMENT_GetGlobalResult(void)
00615 {
00616         XMC_VADC_RESULT_SIZE_t result;
00617 
00618         result = XMC_VADC_GLOBAL_GetDetailedResult(ADC_MEASUREMENT_MODULE_PTR);
00619 
00620         return (result);
00621 }
00622 
00695 __STATIC_INLINE uint32_t ADC_MEASUREMENT_GetGlobalDetailedResult(void)
00696 {
00697         uint32_t result;
00698         result = XMC_VADC_GLOBAL_GetDetailedResult(ADC_MEASUREMENT_MODULE_PTR);
00699 
00700         return (result);
00701 }
00702 #endif
00703 
00708 #include "ADC_MEASUREMENT_Extern.h"
00709 #ifdef __cplusplus
00710 }
00711 #endif
00712 
00713 #endif /* ADC_MEASUREMENT_H_ */