Microchip® Advanced Software Framework

adc.h File Reference

Analog-to-Digital Converter (ADC/ADC12B) driver for SAM.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

#include "compiler.h"

Data Structures

struct  adc_internal_ref
 

Macros

#define ADC_FREQ_MAX   20000000
 
#define ADC_FREQ_MIN   1000000
 
#define ADC_STARTUP_FAST   12
 
#define ADC_STARTUP_NORM   40
 

Enumerations

enum  adc12b_trigger_t {
  ADC12B_TRIG_SW = ADC12B_MR_TRGEN_DIS,
  ADC12B_TRIG_EXT = ADC12B_MR_TRGSEL_ADC_TRIG0 | ADC12B_MR_TRGEN,
  ADC12B_TRIG_TIO_CH_0 = ADC12B_MR_TRGSEL_ADC_TRIG1 | ADC12B_MR_TRGEN,
  ADC12B_TRIG_TIO_CH_1 = ADC12B_MR_TRGSEL_ADC_TRIG2 | ADC12B_MR_TRGEN,
  ADC12B_TRIG_TIO_CH_2 = ADC12B_MR_TRGSEL_ADC_TRIG3 | ADC12B_MR_TRGEN,
  ADC12B_TRIG_PWM_EVENT_LINE_0 = ADC12B_MR_TRGSEL_ADC_TRIG4 | ADC12B_MR_TRGEN,
  ADC12B_TRIG_PWM_EVENT_LINE_1 = ADC12B_MR_TRGSEL_ADC_TRIG5 | ADC12B_MR_TRGEN
}
 
enum  adc_channel_num_t {
  ADC_CHANNEL_0 = 0,
  ADC_CHANNEL_1 = 1,
  ADC_CHANNEL_2 = 2,
  ADC_CHANNEL_3 = 3,
  ADC_CHANNEL_4 = 4,
  ADC_CHANNEL_5 = 5,
  ADC_CHANNEL_6 = 6,
  ADC_TEMPERATURE_SENSOR = 7
}
 
enum  adc_gainvalue_t {
  ADC_GAINVALUE_0 = 0,
  ADC_GAINVALUE_1 = 1,
  ADC_GAINVALUE_2 = 2,
  ADC_GAINVALUE_3 = 3
}
 
enum  adc_internal_ref_voltage {
  ADC_INTERNAL_REF_2426MV = 0,
  ADC_INTERNAL_REF_2305MV,
  ADC_INTERNAL_REF_2184MV,
  ADC_INTERNAL_REF_2063MV,
  ADC_INTERNAL_REF_1941MV,
  ADC_INTERNAL_REF_1820MV,
  ADC_INTERNAL_REF_1699MV,
  ADC_INTERNAL_REF_1578MV,
  ADC_INTERNAL_REF_3396MV,
  ADC_INTERNAL_REF_3275MV,
  ADC_INTERNAL_REF_3154MV,
  ADC_INTERNAL_REF_3032MV,
  ADC_INTERNAL_REF_2911MV,
  ADC_INTERNAL_REF_2790MV,
  ADC_INTERNAL_REF_2699MV,
  ADC_INTERNAL_REF_2547MV
}
 
enum  adc_resolution_t {
  ADC_10_BITS = ADC_MR_LOWRES_BITS_10,
  ADC_12_BITS = ADC_MR_LOWRES_BITS_12
}
 
enum  adc_settling_time_t {
  ADC_SETTLING_TIME_0 = ADC_MR_SETTLING_AST3,
  ADC_SETTLING_TIME_1 = ADC_MR_SETTLING_AST5,
  ADC_SETTLING_TIME_2 = ADC_MR_SETTLING_AST9,
  ADC_SETTLING_TIME_3 = ADC_MR_SETTLING_AST17
}
 
enum  adc_startup_time {
  ADC_STARTUP_TIME_0 = ADC_MR_STARTUP_SUT0,
  ADC_STARTUP_TIME_1 = ADC_MR_STARTUP_SUT8,
  ADC_STARTUP_TIME_2 = ADC_MR_STARTUP_SUT16,
  ADC_STARTUP_TIME_3 = ADC_MR_STARTUP_SUT24,
  ADC_STARTUP_TIME_4 = ADC_MR_STARTUP_SUT64,
  ADC_STARTUP_TIME_5 = ADC_MR_STARTUP_SUT80,
  ADC_STARTUP_TIME_6 = ADC_MR_STARTUP_SUT96,
  ADC_STARTUP_TIME_7 = ADC_MR_STARTUP_SUT112,
  ADC_STARTUP_TIME_8 = ADC_MR_STARTUP_SUT512,
  ADC_STARTUP_TIME_9 = ADC_MR_STARTUP_SUT576,
  ADC_STARTUP_TIME_10 = ADC_MR_STARTUP_SUT640,
  ADC_STARTUP_TIME_11 = ADC_MR_STARTUP_SUT704,
  ADC_STARTUP_TIME_12 = ADC_MR_STARTUP_SUT768,
  ADC_STARTUP_TIME_13 = ADC_MR_STARTUP_SUT832,
  ADC_STARTUP_TIME_14 = ADC_MR_STARTUP_SUT896,
  ADC_STARTUP_TIME_15 = ADC_MR_STARTUP_SUT960
}
 Definitions for ADC Start Up Time. More...
 
enum  adc_temp_cmp_mode {
  ADC_TEMP_CMP_MODE_0 = ADC_TEMPMR_TEMPCMPMOD_LOW,
  ADC_TEMP_CMP_MODE_1 = ADC_TEMPMR_TEMPCMPMOD_HIGH,
  ADC_TEMP_CMP_MODE_2 = ADC_TEMPMR_TEMPCMPMOD_IN,
  ADC_TEMP_CMP_MODE_3 = ADC_TEMPMR_TEMPCMPMOD_OUT
}
 Definitions for Temperature Comparison Mode. More...
 
enum  adc_trigger_t {
  ADC_TRIG_SW = ADC_MR_TRGEN_DIS,
  ADC_TRIG_EXT = ADC_MR_TRGSEL_ADC_TRIG0 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_0 = ADC_MR_TRGSEL_ADC_TRIG1 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_1 = ADC_MR_TRGSEL_ADC_TRIG2 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_2 = ADC_MR_TRGSEL_ADC_TRIG3 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_3 = ADC_MR_TRGSEL_ADC_TRIG3 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_4 = ADC_MR_TRGSEL_ADC_TRIG4 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_5 = ADC_MR_TRGSEL_ADC_TRIG5 | ADC_MR_TRGEN,
  ADC_TRIG_TIO_CH_6 = ADC_MR_TRGSEL_ADC_TRIG6 | ADC_MR_TRGEN,
  ADC_TRIG_PWM_EVENT_LINE_0 = ADC_MR_TRGSEL_ADC_TRIG4 | ADC_MR_TRGEN,
  ADC_TRIG_PWM_EVENT_LINE_1 = ADC_MR_TRGSEL_ADC_TRIG5 | ADC_MR_TRGEN
}
 

Functions

void adc12b_configure_power_save (Adc12b *p_adc, const uint8_t uc_sleep, const uint8_t uc_offmode)
 
void adc12b_configure_timing (Adc12b *p_adc, const uint32_t ul_sh)
 
void adc12b_configure_trigger (Adc12b *p_adc, const enum adc12b_trigger_t trigger)
 
void adc12b_disable_all_channel (Adc12b *p_adc)
 
void adc12b_disable_channel (Adc12b *p_adc, const enum adc_channel_num_t adc_ch)
 
void adc12b_disable_differential_input (Adc12b *p_adc)
 
void adc12b_disable_input_offset (Adc12b *p_adc)
 
void adc12b_disable_interrupt (Adc12b *p_adc, const uint32_t ul_source)
 
void adc12b_enable_all_channel (Adc12b *p_adc)
 
void adc12b_enable_channel (Adc12b *p_adc, const enum adc_channel_num_t adc_ch)
 
void adc12b_enable_differential_input (Adc12b *p_adc)
 
void adc12b_enable_input_offset (Adc12b *p_adc)
 
void adc12b_enable_interrupt (Adc12b *p_adc, const uint32_t ul_source)
 
uint32_t adc12b_get_actual_adc_clock (const Adc12b *p_adc, const uint32_t ul_mck)
 
uint32_t adc12b_get_channel_status (const Adc12b *p_adc, const enum adc_channel_num_t adc_ch)
 
uint32_t adc12b_get_channel_value (const Adc12b *p_adc, const enum adc_channel_num_t adc_ch)
 
uint32_t adc12b_get_interrupt_mask (const Adc12b *p_adc)
 
uint32_t adc12b_get_latest_value (const Adc12b *p_adc)
 
Pdc * adc12b_get_pdc_base (const Adc12b *p_adc)
 
uint32_t adc12b_get_status (const Adc12b *p_adc)
 
uint32_t adc12b_init (Adc12b *p_adc, const uint32_t ul_mck, const uint32_t ul_adc_clock, const uint32_t ul_startuptime, const uint32_t ul_offmode_startuptime)
 
void adc12b_reset (Adc12b *p_adc)
 
void adc12b_set_bias_current (Adc12b *p_adc, const uint8_t uc_ibctl)
 
void adc12b_set_input_gain (Adc12b *p_adc, const enum adc_gainvalue_t uc_gain)
 
void adc12b_set_resolution (Adc12b *p_adc, const enum adc_resolution_t resolution)
 
void adc12b_start (Adc12b *p_adc)
 
void adc_check (Adc *p_adc, const uint32_t ul_mck)
 
void adc_configure_power_save (Adc *p_adc, const uint8_t uc_sleep, const uint8_t uc_fwup)
 
void adc_configure_sequence (Adc *p_adc, const enum adc_channel_num_t ch_list[], const uint8_t uc_num)
 
void adc_configure_timing (Adc *p_adc, const uint8_t uc_tracking, const enum adc_settling_time_t settling, const uint8_t uc_transfer)
 
void adc_configure_trigger (Adc *p_adc, const enum adc_trigger_t trigger, const uint8_t uc_freerun)
 
void adc_configure_ts_comparison (Adc *p_adc, enum adc_temp_cmp_mode mode, uint16_t low_threshold, uint16_t high_threshold)
 
void adc_disable_all_channel (Adc *p_adc)
 Disable all ADC channel. More...
 
void adc_disable_anch (Adc *p_adc)
 
void adc_disable_channel (Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Disable the specified ADC channel. More...
 
void adc_disable_channel_differential_input (Adc *p_adc, const enum adc_channel_num_t channel)
 
void adc_disable_channel_input_offset (Adc *p_adc, const enum adc_channel_num_t channel)
 
void adc_disable_interrupt (Adc *p_adc, const uint32_t ul_source)
 Disable ADC interrupts. More...
 
void adc_disable_tag (Adc *p_adc)
 
void adc_disable_ts (Adc *p_adc)
 
void adc_enable_all_channel (Adc *p_adc)
 Enable all ADC channels. More...
 
void adc_enable_anch (Adc *p_adc)
 
void adc_enable_channel (Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Enable the specified ADC channel. More...
 
void adc_enable_channel_differential_input (Adc *p_adc, const enum adc_channel_num_t channel)
 
void adc_enable_channel_input_offset (Adc *p_adc, const enum adc_channel_num_t channel)
 
void adc_enable_interrupt (Adc *p_adc, const uint32_t ul_source)
 Enable ADC interrupts. More...
 
void adc_enable_tag (Adc *p_adc)
 
void adc_enable_ts (Adc *p_adc)
 
uint32_t adc_get_actual_adc_clock (const Adc *p_adc, const uint32_t ul_mck)
 Return the actual ADC clock. More...
 
uint32_t adc_get_channel_status (const Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Read the ADC channel status. More...
 
uint32_t adc_get_channel_value (const Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Read the ADC result data of the specified channel. More...
 
uint32_t adc_get_comparison_mode (const Adc *p_adc)
 
uint32_t adc_get_interrupt_mask (const Adc *p_adc)
 Read ADC interrupt mask. More...
 
uint32_t adc_get_latest_value (const Adc *p_adc)
 Read the last ADC result data. More...
 
uint32_t adc_get_overrun_status (const Adc *p_adc)
 
Pdc * adc_get_pdc_base (const Adc *p_adc)
 Get PDC registers base address. More...
 
uint32_t adc_get_status (const Adc *p_adc)
 
enum adc_channel_num_t adc_get_tag (const Adc *p_adc)
 
uint32_t adc_get_writeprotect_status (const Adc *p_adc)
 
uint32_t adc_init (Adc *p_adc, const uint32_t ul_mck, const uint32_t ul_adc_clock, const enum adc_startup_time startup)
 
void adc_reset (Adc *p_adc)
 Reset ADC. More...
 
void adc_set_averaging_trigger (Adc *p_adc, bool multi)
 
void adc_set_bias_current (Adc *p_adc, const uint8_t uc_ibctl)
 
void adc_set_calibmode (Adc *p_adc)
 
void adc_set_channel_input_gain (Adc *p_adc, const enum adc_channel_num_t channel, const enum adc_gainvalue_t uc_gain)
 
void adc_set_comparison_channel (Adc *p_adc, const enum adc_channel_num_t channel)
 
void adc_set_comparison_filter (Adc *p_adc, uint8_t filter)
 
void adc_set_comparison_mode (Adc *p_adc, const uint8_t uc_mode)
 
void adc_set_comparison_window (Adc *p_adc, const uint16_t us_low_threshold, const uint16_t us_high_threshold)
 
enum status_code adc_set_internal_reference_voltage (Adc *p_adc, struct adc_internal_ref *ref)
 
void adc_set_resolution (Adc *p_adc, const enum adc_resolution_t resolution)
 Configure the conversion resolution. More...
 
void adc_set_writeprotect (Adc *p_adc, const uint32_t ul_enable)
 
void adc_start (Adc *p_adc)
 Start analog-to-digital conversion. More...
 
void adc_start_sequencer (Adc *p_adc)
 
void adc_stop_sequencer (Adc *p_adc)
 

#define ADC_FREQ_MAX   20000000
#define ADC_FREQ_MIN   1000000
#define ADC_STARTUP_FAST   12
#define ADC_STARTUP_NORM   40

Enumerator
ADC12B_TRIG_SW 
ADC12B_TRIG_EXT 
ADC12B_TRIG_TIO_CH_0 
ADC12B_TRIG_TIO_CH_1 
ADC12B_TRIG_TIO_CH_2 
ADC12B_TRIG_PWM_EVENT_LINE_0 
ADC12B_TRIG_PWM_EVENT_LINE_1 
Enumerator
ADC_CHANNEL_0 
ADC_CHANNEL_1 
ADC_CHANNEL_2 
ADC_CHANNEL_3 
ADC_CHANNEL_4 
ADC_CHANNEL_5 
ADC_CHANNEL_6 
ADC_TEMPERATURE_SENSOR 
Enumerator
ADC_GAINVALUE_0 
ADC_GAINVALUE_1 
ADC_GAINVALUE_2 
ADC_GAINVALUE_3 
Enumerator
ADC_INTERNAL_REF_2426MV 
ADC_INTERNAL_REF_2305MV 
ADC_INTERNAL_REF_2184MV 
ADC_INTERNAL_REF_2063MV 
ADC_INTERNAL_REF_1941MV 
ADC_INTERNAL_REF_1820MV 
ADC_INTERNAL_REF_1699MV 
ADC_INTERNAL_REF_1578MV 
ADC_INTERNAL_REF_3396MV 
ADC_INTERNAL_REF_3275MV 
ADC_INTERNAL_REF_3154MV 
ADC_INTERNAL_REF_3032MV 
ADC_INTERNAL_REF_2911MV 
ADC_INTERNAL_REF_2790MV 
ADC_INTERNAL_REF_2699MV 
ADC_INTERNAL_REF_2547MV 
Enumerator
ADC_10_BITS 
ADC_12_BITS 
Enumerator
ADC_SETTLING_TIME_0 
ADC_SETTLING_TIME_1 
ADC_SETTLING_TIME_2 
ADC_SETTLING_TIME_3 

Definitions for ADC Start Up Time.

Enumerator
ADC_STARTUP_TIME_0 
ADC_STARTUP_TIME_1 
ADC_STARTUP_TIME_2 
ADC_STARTUP_TIME_3 
ADC_STARTUP_TIME_4 
ADC_STARTUP_TIME_5 
ADC_STARTUP_TIME_6 
ADC_STARTUP_TIME_7 
ADC_STARTUP_TIME_8 
ADC_STARTUP_TIME_9 
ADC_STARTUP_TIME_10 
ADC_STARTUP_TIME_11 
ADC_STARTUP_TIME_12 
ADC_STARTUP_TIME_13 
ADC_STARTUP_TIME_14 
ADC_STARTUP_TIME_15 

Definitions for Temperature Comparison Mode.

Enumerator
ADC_TEMP_CMP_MODE_0 
ADC_TEMP_CMP_MODE_1 
ADC_TEMP_CMP_MODE_2 
ADC_TEMP_CMP_MODE_3 
Enumerator
ADC_TRIG_SW 
ADC_TRIG_EXT 
ADC_TRIG_TIO_CH_0 
ADC_TRIG_TIO_CH_1 
ADC_TRIG_TIO_CH_2 
ADC_TRIG_TIO_CH_3 
ADC_TRIG_TIO_CH_4 
ADC_TRIG_TIO_CH_5 
ADC_TRIG_TIO_CH_6 
ADC_TRIG_PWM_EVENT_LINE_0 
ADC_TRIG_PWM_EVENT_LINE_1 

void adc12b_configure_power_save ( Adc12b *  p_adc,
const uint8_t  uc_sleep,
const uint8_t  uc_offmode 
)
void adc12b_configure_timing ( Adc12b *  p_adc,
const uint32_t  ul_sh 
)
void adc12b_configure_trigger ( Adc12b *  p_adc,
const enum adc12b_trigger_t  trigger 
)
void adc12b_disable_all_channel ( Adc12b *  p_adc)
void adc12b_disable_channel ( Adc12b *  p_adc,
const enum adc_channel_num_t  adc_ch 
)
void adc12b_disable_differential_input ( Adc12b *  p_adc)
void adc12b_disable_input_offset ( Adc12b *  p_adc)
void adc12b_disable_interrupt ( Adc12b *  p_adc,
const uint32_t  ul_source 
)
void adc12b_enable_all_channel ( Adc12b *  p_adc)
void adc12b_enable_channel ( Adc12b *  p_adc,
const enum adc_channel_num_t  adc_ch 
)
void adc12b_enable_differential_input ( Adc12b *  p_adc)
void adc12b_enable_input_offset ( Adc12b *  p_adc)
void adc12b_enable_interrupt ( Adc12b *  p_adc,
const uint32_t  ul_source 
)
uint32_t adc12b_get_actual_adc_clock ( const Adc12b *  p_adc,
const uint32_t  ul_mck 
)
uint32_t adc12b_get_channel_status ( const Adc12b *  p_adc,
const enum adc_channel_num_t  adc_ch 
)
uint32_t adc12b_get_channel_value ( const Adc12b *  p_adc,
const enum adc_channel_num_t  adc_ch 
)
uint32_t adc12b_get_interrupt_mask ( const Adc12b *  p_adc)
uint32_t adc12b_get_latest_value ( const Adc12b *  p_adc)
Pdc* adc12b_get_pdc_base ( const Adc12b *  p_adc)
uint32_t adc12b_get_status ( const Adc12b *  p_adc)
uint32_t adc12b_init ( Adc12b *  p_adc,
const uint32_t  ul_mck,
const uint32_t  ul_adc_clock,
const uint32_t  ul_startuptime,
const uint32_t  ul_offmode_startuptime 
)
void adc12b_reset ( Adc12b *  p_adc)
void adc12b_set_bias_current ( Adc12b *  p_adc,
const uint8_t  uc_ibctl 
)
void adc12b_set_input_gain ( Adc12b *  p_adc,
const enum adc_gainvalue_t  uc_gain 
)
void adc12b_set_resolution ( Adc12b *  p_adc,
const enum adc_resolution_t  resolution 
)
void adc12b_start ( Adc12b *  p_adc)
void adc_check ( Adc *  p_adc,
const uint32_t  ul_mck 
)
void adc_configure_power_save ( Adc *  p_adc,
const uint8_t  uc_sleep,
const uint8_t  uc_fwup 
)
void adc_configure_sequence ( Adc *  p_adc,
const enum adc_channel_num_t  ch_list[],
const uint8_t  uc_num 
)
void adc_configure_timing ( Adc *  p_adc,
const uint8_t  uc_tracking,
const enum adc_settling_time_t  settling,
const uint8_t  uc_transfer 
)
void adc_configure_trigger ( Adc *  p_adc,
const enum adc_trigger_t  trigger,
const uint8_t  uc_freerun 
)
void adc_configure_ts_comparison ( Adc *  p_adc,
enum adc_temp_cmp_mode  mode,
uint16_t  low_threshold,
uint16_t  high_threshold 
)
void adc_disable_anch ( Adc *  p_adc)
void adc_disable_channel_differential_input ( Adc *  p_adc,
const enum adc_channel_num_t  channel 
)
void adc_disable_channel_input_offset ( Adc *  p_adc,
const enum adc_channel_num_t  channel 
)
void adc_disable_tag ( Adc *  p_adc)
void adc_disable_ts ( Adc *  p_adc)
void adc_enable_anch ( Adc *  p_adc)
void adc_enable_channel_differential_input ( Adc *  p_adc,
const enum adc_channel_num_t  channel 
)
void adc_enable_channel_input_offset ( Adc *  p_adc,
const enum adc_channel_num_t  channel 
)
void adc_enable_tag ( Adc *  p_adc)
void adc_enable_ts ( Adc *  p_adc)
uint32_t adc_get_comparison_mode ( const Adc *  p_adc)
uint32_t adc_get_overrun_status ( const Adc *  p_adc)
uint32_t adc_get_status ( const Adc *  p_adc)
enum adc_channel_num_t adc_get_tag ( const Adc *  p_adc)
uint32_t adc_get_writeprotect_status ( const Adc *  p_adc)
uint32_t adc_init ( Adc *  p_adc,
const uint32_t  ul_mck,
const uint32_t  ul_adc_clock,
const enum adc_startup_time  startup 
)
void adc_set_averaging_trigger ( Adc *  p_adc,
bool  multi 
)
void adc_set_bias_current ( Adc *  p_adc,
const uint8_t  uc_ibctl 
)
void adc_set_calibmode ( Adc *  p_adc)
void adc_set_channel_input_gain ( Adc *  p_adc,
const enum adc_channel_num_t  channel,
const enum adc_gainvalue_t  uc_gain 
)
void adc_set_comparison_channel ( Adc *  p_adc,
const enum adc_channel_num_t  channel 
)
void adc_set_comparison_filter ( Adc *  p_adc,
uint8_t  filter 
)
void adc_set_comparison_mode ( Adc *  p_adc,
const uint8_t  uc_mode 
)
void adc_set_comparison_window ( Adc *  p_adc,
const uint16_t  us_low_threshold,
const uint16_t  us_high_threshold 
)
enum status_code adc_set_internal_reference_voltage ( Adc *  p_adc,
struct adc_internal_ref ref 
)
void adc_set_writeprotect ( Adc *  p_adc,
const uint32_t  ul_enable 
)
void adc_start_sequencer ( Adc *  p_adc)
void adc_stop_sequencer ( Adc *  p_adc)