Microchip® Advanced Software Framework

adc_megarf.h File Reference

ATmega_RF family defines.

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

Macros

#define ADC_ADTS_REG   ADCSRB
 
#define ADC_VREF_AVCC   ADC_VREF_1V6
 
#define ADSUT_gm
 
#define ADTHT_gm   (1 << ADTHT1 | 1 << ADTHT0)
 
#define BGCAL_COARSE_gm   (1 << BGCAL2 | 1 << BGCAL1 | BGCAL0)
 
#define BGCAL_FINE_gm
 

Enumerations

enum  adc_mux_setting {
  ADC_MUX_ADC0 = 0x0,
  ADC_MUX_ADC1 = 0x1,
  ADC_MUX_ADC2 = 0x2,
  ADC_MUX_ADC3 = 0x3,
  ADC_MUX_ADC4 = 0x4,
  ADC_MUX_ADC5 = 0x5,
  ADC_MUX_ADC6 = 0x6,
  ADC_MUX_ADC7 = 0x7,
  ADC_MUX_1V22 = 0x1E,
  ADC_MUX_GND = 0x1F,
  ADC_MUX_ADC0_ADC0_10X = 0x8,
  ADC_MUX_ADC1_ADC0_10X = 0x9,
  ADC_MUX_ADC0_ADC0_200X = 0xA,
  ADC_MUX_ADC1_ADC0_200X = 0xB,
  ADC_MUX_ADC2_ADC2_10X = 0xC,
  ADC_MUX_ADC3_ADC2_10X = 0xD,
  ADC_MUX_ADC2_ADC2_200X = 0xE,
  ADC_MUX_ADC3_ADC2_200X = 0xF,
  ADC_MUX_ADC0_ADC1 = 0x10,
  ADC_MUX_ADC1_ADC1 = 0x11,
  ADC_MUX_ADC2_ADC1 = 0x12,
  ADC_MUX_ADC3_ADC1 = 0x13,
  ADC_MUX_ADC4_ADC1 = 0x14,
  ADC_MUX_ADC5_ADC1 = 0x15,
  ADC_MUX_ADC6_ADC1 = 0x16,
  ADC_MUX_ADC7_ADC1 = 0x17,
  ADC_MUX_ADC0_ADC2 = 0x18,
  ADC_MUX_ADC1_ADC2 = 0x19,
  ADC_MUX_ADC2_ADC2 = 0x1A,
  ADC_MUX_ADC3_ADC2 = 0x1B,
  ADC_MUX_ADC4_ADC2 = 0x1C,
  ADC_MUX_ADC5_ADC2 = 0x1D,
  ADC_MUX_ADC0 = 0x0,
  ADC_MUX_ADC1 = 0x1,
  ADC_MUX_ADC2 = 0x2,
  ADC_MUX_ADC3 = 0x3,
  ADC_MUX_ADC4 = 0x4,
  ADC_MUX_ADC5 = 0x5,
  ADC_MUX_ADC6 = 0x6,
  ADC_MUX_ADC7 = 0x7,
  ADC_MUX_1V1 = 0x1E,
  ADC_MUX_GND = 0x1F,
  ADC_MUX_ADC0_ADC0_10X = 0x8,
  ADC_MUX_ADC1_ADC0_10X = 0x9,
  ADC_MUX_ADC0_ADC0_200X = 0xA,
  ADC_MUX_ADC1_ADC0_200X = 0xB,
  ADC_MUX_ADC2_ADC2_10X = 0xC,
  ADC_MUX_ADC3_ADC2_10X = 0xD,
  ADC_MUX_ADC2_ADC2_200X = 0xE,
  ADC_MUX_ADC3_ADC2_200X = 0xF,
  ADC_MUX_ADC0_ADC1 = 0x10,
  ADC_MUX_ADC1_ADC1 = 0x11,
  ADC_MUX_ADC2_ADC1 = 0x12,
  ADC_MUX_ADC3_ADC1 = 0x13,
  ADC_MUX_ADC4_ADC1 = 0x14,
  ADC_MUX_ADC5_ADC1 = 0x15,
  ADC_MUX_ADC6_ADC1 = 0x16,
  ADC_MUX_ADC7_ADC1 = 0x17,
  ADC_MUX_ADC0_ADC2 = 0x18,
  ADC_MUX_ADC1_ADC2 = 0x19,
  ADC_MUX_ADC2_ADC2 = 0x1A,
  ADC_MUX_ADC3_ADC2 = 0x1B,
  ADC_MUX_ADC4_ADC2 = 0x1C,
  ADC_MUX_ADC5_ADC2 = 0x1D,
  ADC_MUX_ADC0 = 0x0,
  ADC_MUX_ADC1 = 0x1,
  ADC_MUX_ADC2 = 0x2,
  ADC_MUX_ADC3 = 0x3,
  ADC_MUX_ADC4 = 0x4,
  ADC_MUX_ADC5 = 0x5,
  ADC_MUX_ADC6 = 0x6,
  ADC_MUX_ADC7 = 0x7,
  ADC_MUX_1V2 = 0x1E,
  ADC_MUX_GND = 0x1F,
  ADC_MUX_ADC0_ADC0_10X = 0x8,
  ADC_MUX_ADC1_ADC0_10X = 0x9,
  ADC_MUX_ADC0_ADC0_200X = 0xA,
  ADC_MUX_ADC1_ADC0_200X = 0xB,
  ADC_MUX_ADC2_ADC2_10X = 0xC,
  ADC_MUX_ADC3_ADC2_10X = 0xD,
  ADC_MUX_ADC2_ADC2_200X = 0xE,
  ADC_MUX_ADC3_ADC2_200X = 0xF,
  ADC_MUX_ADC0_ADC1 = 0x10,
  ADC_MUX_ADC1_ADC1 = 0x11,
  ADC_MUX_ADC2_ADC1 = 0x12,
  ADC_MUX_ADC3_ADC1 = 0x13,
  ADC_MUX_ADC4_ADC1 = 0x14,
  ADC_MUX_ADC5_ADC1 = 0x15,
  ADC_MUX_ADC6_ADC1 = 0x16,
  ADC_MUX_ADC7_ADC1 = 0x17,
  ADC_MUX_ADC0_ADC2 = 0x18,
  ADC_MUX_ADC1_ADC2 = 0x19,
  ADC_MUX_ADC2_ADC2 = 0x1A,
  ADC_MUX_ADC3_ADC2 = 0x1B,
  ADC_MUX_ADC4_ADC2 = 0x1C,
  ADC_MUX_ADC5_ADC2 = 0x1D,
  ADC_MUX_TEMP_SENSOR = 0x29,
  ADC_MUX_VDRTBBP = 0x34,
  ADC_MUX_VDRTBBN = 0x3D,
  ADC_MUX_ADC0 = 0x0,
  ADC_MUX_ADC1 = 0x1,
  ADC_MUX_ADC2 = 0x2,
  ADC_MUX_ADC3 = 0x3,
  ADC_MUX_ADC4 = 0x4,
  ADC_MUX_ADC5 = 0x5,
  ADC_MUX_ADC6 = 0x6,
  ADC_MUX_ADC7 = 0x7,
  ADC_MUX_1V1 = 0x0E,
  ADC_MUX_GND = 0x0F
}
 
enum  adc_reference_voltage_coarse_calibration {
  REF_VOLTAGE_COARSE_CENTER = (0x4 << BGCAL0),
  REF_VOLTAGE_COARSE_STEP_UP = (0x3 << BGCAL0),
  REF_VOLTAGE_COARSE_STEP_DOWN = (0x5 << BGCAL0),
  REF_VOLTAGE_COARSE_HIGHEST_VOLTGAE = (0x0 << BGCAL0),
  REF_VOLTAGE_COARSE_LOWEST_VOLTGAE = (0x7 << BGCAL0)
}
 
enum  adc_reference_voltage_fine_calibration {
  REF_VOLTAGE_FINE_CENTER = (0x0 << BGCAL_FINE0),
  REF_VOLTAGE_FINE_STEP_UP = (0x1 << BGCAL_FINE0),
  REF_VOLTAGE_FINE_STEP_DOWN = (0x8 << BGCAL_FINE0),
  REF_VOLTAGE_FINE_HIGHEST_VOLTGAE = (0x7 << BGCAL_FINE0),
  REF_VOLTAGE_FINE_LOWEST_VOLTGAE = (0xF << BGCAL_FINE0)
}
 
enum  adc_voltage_reference {
  ADC_VREF_AREF = (0x0 << REFS0),
  ADC_VREF_AVCC = (0x1 << REFS0),
  ADC_VREF_RESERVED = (0x2 << REFS0),
  ADC_VREF_2V56 = (0x3 << REFS0),
  ADC_VREF_AREF = (0x0 << REFS0),
  ADC_VREF_AVCC = (0x1 << REFS0),
  ADC_VREF_1V1 = (0x2 << REFS0),
  ADC_VREF_2V56 = (0x3 << REFS0),
  ADC_VREF_AREF = (0x0 << REFS0),
  ADC_VREF_AVDD_1V8 = (0x1 << REFS0),
  ADC_VREF_1V5 = (0x2 << REFS0),
  ADC_VREF_1V6 = (0x3 << REFS0),
  ADC_VREF_AREF = (0x0 << REFS0),
  ADC_VREF_AVCC = (0x1 << REFS0),
  ADC_VREF_RESERVED = (0x2 << REFS0),
  ADC_VREF_1V1 = (0x3 << REFS0)
}
 

Functions

static bool adc_avdd_supply_check (void)
 check the status of AVDD domain More...
 
static bool adc_ref_voltage_check (void)
 check the status of internal generated reference voltage More...
 
static void adc_ref_voltage_coarse_set (enum adc_reference_voltage_coarse_calibration val)
 calibrates reference voltage of the ADC with resolution of 10mV More...
 
static void adc_ref_voltage_fine_set (enum adc_reference_voltage_fine_calibration val)
 calibrates reference voltage of the ADC with resolution of 2mV More...
 
static void adc_start_up_time (uint8_t adsut_val)
 set the number of ADC clock cycles required for the start-up time of the analog blocks. More...
 
static void adc_track_and_hold_time (uint8_t adtht_val)
 set the number of ADC clock cycles required for sampling time of the analog input voltage More...
 
static void adc_wait_avddok (void)
 wait until analog voltage regulator is powered on More...
 

#define ADC_ADTS_REG   ADCSRB
#define ADC_VREF_AVCC   ADC_VREF_1V6

Referenced by adc_initialisation(), and main().

#define ADSUT_gm
Value:
(1 << ADSUT4 | 1 << ADSUT3 | 1 << ADSUT2 | 1 << \
ADSUT1 | 1 << ADSUT0)

Referenced by adc_start_up_time().

#define ADTHT_gm   (1 << ADTHT1 | 1 << ADTHT0)

Referenced by adc_track_and_hold_time().

#define BGCAL_COARSE_gm   (1 << BGCAL2 | 1 << BGCAL1 | BGCAL0)
#define BGCAL_FINE_gm
Value:
(1 << BGCAL_FINE3 | 1 << BGCAL_FINE2 | 1 << \
BGCAL_FINE1 | 1 << BGCAL_FINE0)

Referenced by adc_ref_voltage_fine_set().

Enumerator
ADC_MUX_ADC0 

ADC0, single ended.

ADC_MUX_ADC1 

ADC1, single ended.

ADC_MUX_ADC2 

ADC2, single ended.

ADC_MUX_ADC3 

ADC3, single ended.

ADC_MUX_ADC4 

ADC4, single ended.

ADC_MUX_ADC5 

ADC5, single ended.

ADC_MUX_ADC6 

ADC6, single ended.

ADC_MUX_ADC7 

ADC7, single ended.

ADC_MUX_1V22 

1.22V internal bandgap voltage

ADC_MUX_GND 

GND, single ended.

ADC_MUX_ADC0_ADC0_10X 

Positive: ADC0 Negative: ADC0 Gain: 10x.

ADC_MUX_ADC1_ADC0_10X 

Positive: ADC1 Negative: ADC0 Gain: 10x.

ADC_MUX_ADC0_ADC0_200X 

Positive: ADC0 Negative: ADC0 Gain: 200x.

ADC_MUX_ADC1_ADC0_200X 

Positive: ADC1 Negative: ADC0 Gain: 200x.

ADC_MUX_ADC2_ADC2_10X 

Positive: ADC2 Negative: ADC2 Gain: 10x.

ADC_MUX_ADC3_ADC2_10X 

Positive: ADC3 Negative: ADC2 Gain: 10x.

ADC_MUX_ADC2_ADC2_200X 

Positive: ADC2 Negative: ADC2 Gain: 200x.

ADC_MUX_ADC3_ADC2_200X 

Positive: ADC3 Negative: ADC2 Gain: 200x.

ADC_MUX_ADC0_ADC1 

Positive: ADC0 Negative: ADC1.

ADC_MUX_ADC1_ADC1 

Positive: ADC1 Negative: ADC1.

ADC_MUX_ADC2_ADC1 

Positive: ADC2 Negative: ADC1.

ADC_MUX_ADC3_ADC1 

Positive: ADC3 Negative: ADC1.

ADC_MUX_ADC4_ADC1 

Positive: ADC4 Negative: ADC1.

ADC_MUX_ADC5_ADC1 

Positive: ADC5 Negative: ADC1.

ADC_MUX_ADC6_ADC1 

Positive: ADC6 Negative: ADC1.

ADC_MUX_ADC7_ADC1 

Positive: ADC7 Negative: ADC1.

ADC_MUX_ADC0_ADC2 

Positive: ADC0 Negative: ADC2.

ADC_MUX_ADC1_ADC2 

Positive: ADC1 Negative: ADC2.

ADC_MUX_ADC2_ADC2 

Positive: ADC2 Negative: ADC2.

ADC_MUX_ADC3_ADC2 

Positive: ADC3 Negative: ADC2.

ADC_MUX_ADC4_ADC2 

Positive: ADC4 Negative: ADC2.

ADC_MUX_ADC5_ADC2 

Positive: ADC5 Negative: ADC2.

ADC_MUX_ADC0 

ADC0, single ended.

ADC_MUX_ADC1 

ADC1, single ended.

ADC_MUX_ADC2 

ADC2, single ended.

ADC_MUX_ADC3 

ADC3, single ended.

ADC_MUX_ADC4 

ADC4, single ended.

ADC_MUX_ADC5 

ADC5, single ended.

ADC_MUX_ADC6 

ADC6, single ended.

ADC_MUX_ADC7 

ADC7, single ended.

ADC_MUX_1V1 

1.1V internal bandgap voltage

ADC_MUX_GND 

GND, single ended.

ADC_MUX_ADC0_ADC0_10X 

Positive: ADC0 Negative: ADC0 Gain: 10x.

ADC_MUX_ADC1_ADC0_10X 

Positive: ADC1 Negative: ADC0 Gain: 10x.

ADC_MUX_ADC0_ADC0_200X 

Positive: ADC0 Negative: ADC0 Gain: 200x.

ADC_MUX_ADC1_ADC0_200X 

Positive: ADC1 Negative: ADC0 Gain: 200x.

ADC_MUX_ADC2_ADC2_10X 

Positive: ADC2 Negative: ADC2 Gain: 10x.

ADC_MUX_ADC3_ADC2_10X 

Positive: ADC3 Negative: ADC2 Gain: 10x.

ADC_MUX_ADC2_ADC2_200X 

Positive: ADC2 Negative: ADC2 Gain: 200x.

ADC_MUX_ADC3_ADC2_200X 

Positive: ADC3 Negative: ADC2 Gain: 200x.

ADC_MUX_ADC0_ADC1 

Positive: ADC0 Negative: ADC1.

ADC_MUX_ADC1_ADC1 

Positive: ADC1 Negative: ADC1.

ADC_MUX_ADC2_ADC1 

Positive: ADC2 Negative: ADC1.

ADC_MUX_ADC3_ADC1 

Positive: ADC3 Negative: ADC1.

ADC_MUX_ADC4_ADC1 

Positive: ADC4 Negative: ADC1.

ADC_MUX_ADC5_ADC1 

Positive: ADC5 Negative: ADC1.

ADC_MUX_ADC6_ADC1 

Positive: ADC6 Negative: ADC1.

ADC_MUX_ADC7_ADC1 

Positive: ADC7 Negative: ADC1.

ADC_MUX_ADC0_ADC2 

Positive: ADC0 Negative: ADC2.

ADC_MUX_ADC1_ADC2 

Positive: ADC1 Negative: ADC2.

ADC_MUX_ADC2_ADC2 

Positive: ADC2 Negative: ADC2.

ADC_MUX_ADC3_ADC2 

Positive: ADC3 Negative: ADC2.

ADC_MUX_ADC4_ADC2 

Positive: ADC4 Negative: ADC2.

ADC_MUX_ADC5_ADC2 

Positive: ADC5 Negative: ADC2.

ADC_MUX_ADC0 

ADC0, single ended

ADC_MUX_ADC1 

ADC1, single ended

ADC_MUX_ADC2 

ADC2, single ended

ADC_MUX_ADC3 

ADC3, single ended

ADC_MUX_ADC4 

ADC4, single ended

ADC_MUX_ADC5 

ADC5, single ended

ADC_MUX_ADC6 

ADC6, single ended

ADC_MUX_ADC7 

ADC7, single ended

ADC_MUX_1V2 

1.1V internal bandgap voltage

ADC_MUX_GND 

GND, single ended

ADC_MUX_ADC0_ADC0_10X 

Positive: ADC0 Negative: ADC0 Gain: 10x

ADC_MUX_ADC1_ADC0_10X 

Positive: ADC1 Negative: ADC0 Gain: 10x

ADC_MUX_ADC0_ADC0_200X 

Positive: ADC0 Negative: ADC0 Gain: 200x

ADC_MUX_ADC1_ADC0_200X 

Positive: ADC1 Negative: ADC0 Gain: 200x

ADC_MUX_ADC2_ADC2_10X 

Positive: ADC2 Negative: ADC2 Gain: 10x

ADC_MUX_ADC3_ADC2_10X 

Positive: ADC3 Negative: ADC2 Gain: 10x

ADC_MUX_ADC2_ADC2_200X 

Positive: ADC2 Negative: ADC2 Gain: 200x

ADC_MUX_ADC3_ADC2_200X 

Positive: ADC3 Negative: ADC2 Gain: 200x

ADC_MUX_ADC0_ADC1 

Positive: ADC0 Negative: ADC1

ADC_MUX_ADC1_ADC1 

Positive: ADC1 Negative: ADC1

ADC_MUX_ADC2_ADC1 

Positive: ADC2 Negative: ADC1

ADC_MUX_ADC3_ADC1 

Positive: ADC3 Negative: ADC1

ADC_MUX_ADC4_ADC1 

Positive: ADC4 Negative: ADC1

ADC_MUX_ADC5_ADC1 

Positive: ADC5 Negative: ADC1

ADC_MUX_ADC6_ADC1 

Positive: ADC6 Negative: ADC1

ADC_MUX_ADC7_ADC1 

Positive: ADC7 Negative: ADC1

ADC_MUX_ADC0_ADC2 

Positive: ADC0 Negative: ADC2

ADC_MUX_ADC1_ADC2 

Positive: ADC1 Negative: ADC2

ADC_MUX_ADC2_ADC2 

Positive: ADC2 Negative: ADC2

ADC_MUX_ADC3_ADC2 

Positive: ADC3 Negative: ADC2

ADC_MUX_ADC4_ADC2 

Positive: ADC4 Negative: ADC2

ADC_MUX_ADC5_ADC2 

Positive: ADC5 Negative: ADC2

ADC_MUX_TEMP_SENSOR 

Temperature Sensor

ADC_MUX_VDRTBBP 

SRAM Back-bias Voltage VDRTBBP

ADC_MUX_VDRTBBN 

SRAM Back-bias Voltage VDRTBBN

ADC_MUX_ADC0 

ADC0, single ended.

ADC_MUX_ADC1 

ADC1, single ended.

ADC_MUX_ADC2 

ADC2, single ended.

ADC_MUX_ADC3 

ADC3, single ended.

ADC_MUX_ADC4 

ADC4, single ended.

ADC_MUX_ADC5 

ADC5, single ended.

ADC_MUX_ADC6 

ADC6, single ended.

ADC_MUX_ADC7 

ADC7, single ended.

ADC_MUX_1V1 

1.1V internal bandgap voltage

ADC_MUX_GND 

GND, single ended.

Enumerator
REF_VOLTAGE_COARSE_CENTER 

Reference voltage coarse calibration voltage center value

REF_VOLTAGE_COARSE_STEP_UP 

Reference voltage coarse calibration voltage step up

REF_VOLTAGE_COARSE_STEP_DOWN 

Reference voltage coarse calibration voltage step down

REF_VOLTAGE_COARSE_HIGHEST_VOLTGAE 

Reference voltage coarse calibration voltage highest voltage

REF_VOLTAGE_COARSE_LOWEST_VOLTGAE 

Reference voltage coarse calibration voltage lowest voltage

Enumerator
REF_VOLTAGE_FINE_CENTER 

Reference voltage fine calibration voltage center value

REF_VOLTAGE_FINE_STEP_UP 

Reference voltage fine calibration voltage step up

REF_VOLTAGE_FINE_STEP_DOWN 

Reference voltage fine calibration voltage step down

REF_VOLTAGE_FINE_HIGHEST_VOLTGAE 

Reference voltage fine calibration voltage highest voltage

REF_VOLTAGE_FINE_LOWEST_VOLTGAE 

Reference voltage fine calibration voltage lowest voltage

Enumerator
ADC_VREF_AREF 

AREF, internal Vref turned off.

ADC_VREF_AVCC 

AVCC.

ADC_VREF_RESERVED 

Reserved value, not available.

ADC_VREF_2V56 

Internal 1.1V voltage reference.

ADC_VREF_AREF 

AREF, internal Vref turned off.

ADC_VREF_AVCC 

AVCC.

ADC_VREF_1V1 

Internal 1.1V voltage reference.

ADC_VREF_2V56 

Internal 2.56V voltage reference.

ADC_VREF_AREF 

AREF, internal Vref turned off

ADC_VREF_AVDD_1V8 

AVDD, 1.8V Regulated analog supply voltage

ADC_VREF_1V5 

Internal 1.5V Voltage Reference

ADC_VREF_1V6 

Internal 1.6V Voltage Reference

ADC_VREF_AREF 

AREF, internal Vref turned off.

ADC_VREF_AVCC 

AVCC.

ADC_VREF_RESERVED 

Reserved value, not available.

ADC_VREF_1V1 

Internal 1.1V voltage reference.

static bool adc_avdd_supply_check ( void  )
inlinestatic

check the status of AVDD domain

Returns
true if AVDD is powered-up
static bool adc_ref_voltage_check ( void  )
inlinestatic

check the status of internal generated reference voltage

Returns
true if internal generated reference voltage is powered-up
static void adc_ref_voltage_coarse_set ( enum adc_reference_voltage_coarse_calibration  val)
inlinestatic

calibrates reference voltage of the ADC with resolution of 10mV

Parameters
valreference_voltage_coarse_calibration

References BGCAL_COARSE_gm.

static void adc_ref_voltage_fine_set ( enum adc_reference_voltage_fine_calibration  val)
inlinestatic

calibrates reference voltage of the ADC with resolution of 2mV

Parameters
valreference_voltage_fine_calibration

References BGCAL_FINE_gm.

static void adc_start_up_time ( uint8_t  adsut_val)
inlinestatic

set the number of ADC clock cycles required for the start-up time of the analog blocks.

Parameters
adsut_valADC Startup time
Note
ADSUT = ((startup_time/4) - 1), minimum 20uSec & max of 128uSec

References ADSUT_gm.

static void adc_track_and_hold_time ( uint8_t  adtht_val)
inlinestatic

set the number of ADC clock cycles required for sampling time of the analog input voltage

Parameters
adtht_valGain Amplifier Initialization Time
Note
ADTHT = ((gain_time/2) - 2)

References ADTHT_gm.

static void adc_wait_avddok ( void  )
inlinestatic

wait until analog voltage regulator is powered on