ATmega328p
Hardware definitions
Loading...
Searching...
No Matches
ADC.h
Go to the documentation of this file.
1
5
6#ifndef ATMEGA328P_DEFINITIONS_ADC_H
7#define ATMEGA328P_DEFINITIONS_ADC_H
8
9#include <stdint.h>
10#include "Package.h"
11
13namespace atmega328p
14{
16 namespace adc
17 {
19 enum class Channel : uint8_t
20 {
21 ADC0 = 0,
22 ADC1 = 1,
23 ADC2 = 2,
24 ADC3 = 3,
25 ADC4 = 4,
26 ADC5 = 5,
27 ADC6 = 6,
28 ADC7 = 7,
29 };
30
32 enum class InputPin : uint8_t
33 {
34 ADC0 = 0x10,
35 ADC1 = 0x11,
36 ADC2 = 0x12,
37 ADC3 = 0x13,
38 ADC4 = 0x14,
39 ADC5 = 0x15,
40 ADC6 = 0xFF,
41 ADC7 = 0xFF,
42 };
43
45 enum class InternalInput : uint8_t
46 {
48 Bandgap = 14,
49 Ground = 15,
50 };
51
53 enum class Reference : uint8_t
54 {
55 AREF = 0,
56 AVCC = 1,
59 };
60
73
75 enum class Prescaler : uint16_t
76 {
77 Divide2 = 2,
78 Divide4 = 4,
79 Divide8 = 8,
80 Divide16 = 16,
81 Divide32 = 32,
82 Divide64 = 64,
83 Divide128 = 128,
84 };
85
86 enum : uint32_t
87 {
89 max_result = 1023,
91 external_channel_count = package::selected::adc_channel_count,
104 };
105
106 enum : uint8_t
107 {
119 };
120
121 enum : uint16_t
122 {
128 };
129
130 static constexpr float family_absolute_accuracy_lsb = 2.0f;
131 static constexpr float family_inl_lsb = 0.5f;
134 static constexpr float automotive_typical_inl_lsb_at_200khz = 0.6f;
135 static constexpr float automotive_max_inl_lsb_at_200khz = 1.5f;
136 static constexpr float automotive_typical_dnl_lsb_at_200khz = 0.3f;
137 static constexpr float automotive_max_dnl_lsb_at_200khz = 0.7f;
138 static constexpr float automotive_max_gain_error_lsb = 3.5f;
139 static constexpr float automotive_max_offset_error_lsb = 3.5f;
140 }
141}
142
143#endif
Package characteristics and selected physical package.
Analog-to-digital converter definitions.
Definition ADC.h:17
Prescaler
ADC clock prescaler values.
Definition ADC.h:76
@ Divide64
64 - Divide ADC clock by 64.
Definition ADC.h:82
@ Divide4
4 - Divide ADC clock by 4.
Definition ADC.h:78
@ Divide16
16 - Divide ADC clock by 16.
Definition ADC.h:80
@ Divide8
8 - Divide ADC clock by 8.
Definition ADC.h:79
@ Divide128
128 - Divide ADC clock by 128.
Definition ADC.h:83
@ Divide32
32 - Divide ADC clock by 32.
Definition ADC.h:81
@ Divide2
2 - Divide ADC clock by 2.
Definition ADC.h:77
static constexpr float automotive_max_dnl_lsb_at_200khz
Definition ADC.h:137
Channel
External ADC input channels.
Definition ADC.h:20
@ ADC0
0 - External ADC input 0 (PC0).
Definition ADC.h:21
@ ADC5
5 - External ADC input 5 (PC5).
Definition ADC.h:26
@ ADC4
4 - External ADC input 4 (PC4).
Definition ADC.h:25
@ ADC2
2 - External ADC input 2 (PC2).
Definition ADC.h:23
@ ADC7
7 - External ADC input 7 (32-terminal package only).
Definition ADC.h:28
@ ADC6
6 - External ADC input 6 (32-terminal package only).
Definition ADC.h:27
@ ADC1
1 - External ADC input 1 (PC1).
Definition ADC.h:22
@ ADC3
3 - External ADC input 3 (PC3).
Definition ADC.h:24
InputPin
Logical pin associated with each external ADC channel.
Definition ADC.h:33
static constexpr float automotive_max_gain_error_lsb
Definition ADC.h:138
static constexpr float automotive_typical_inl_lsb_at_200khz
Definition ADC.h:134
static constexpr float family_absolute_accuracy_lsb
Definition ADC.h:130
static constexpr float automotive_max_offset_error_lsb
Definition ADC.h:139
static constexpr float automotive_typical_absolute_accuracy_lsb_at_200khz
Definition ADC.h:132
static constexpr float family_inl_lsb
Definition ADC.h:131
static constexpr float automotive_max_inl_lsb_at_200khz
Definition ADC.h:135
static constexpr float automotive_typical_dnl_lsb_at_200khz
Definition ADC.h:136
@ has_internal_bandgap_input
Internal bandgap input available.
Definition ADC.h:109
@ conversion_range_starts_at_gnd
Conversion range starts at gnd.
Definition ADC.h:113
@ input_pin_range_ends_at_vcc
Input pin range ends at VCC.
Definition ADC.h:112
@ conversion_range_ends_at_vref
Conversion range ends at VREF.
Definition ADC.h:114
@ temperature_sensor_gain_signature_address
Temperature sensor gain signature address.
Definition ADC.h:117
@ has_ground_input
Ground input available.
Definition ADC.h:110
@ temperature_sensor_offset_signature_address
Temperature sensor offset signature address.
Definition ADC.h:118
@ has_internal_temperature_sensor
Internal temperature sensor available.
Definition ADC.h:108
@ input_pin_range_starts_at_gnd
Input pin range starts at gnd.
Definition ADC.h:111
@ temperature_sensor_calibrated_accuracy_c
Temperature sensor calibrated accuracy c.
Definition ADC.h:115
@ temperature_sensor_requires_calibration
Temperature sensor requires calibration.
Definition ADC.h:116
InternalInput
Internal ADC multiplexer inputs.
Definition ADC.h:46
@ Bandgap
14 - Internal bandgap voltage.
Definition ADC.h:48
@ TemperatureSensor
8 - On-chip temperature sensor.
Definition ADC.h:47
@ Ground
15 - Ground for offset measurement.
Definition ADC.h:49
@ automotive_temperature_code_25c
Automotive temperature code 25c.
Definition ADC.h:124
@ automotive_temperature_code_minus_40c
Automotive temperature code minus 40c.
Definition ADC.h:123
@ automotive_temperature_code_125c
Automotive temperature code 125c.
Definition ADC.h:125
@ automotive_accuracy_test_vcc_mv
Automotive accuracy test VCC (mV).
Definition ADC.h:126
@ automotive_accuracy_test_vref_mv
Automotive accuracy test VREF (mV).
Definition ADC.h:127
TriggerSource
Automatic conversion trigger sources.
Definition ADC.h:63
@ Timer1CaptureEvent
7 - Timer1 input-capture event.
Definition ADC.h:71
@ AnalogComparator
1 - Analog comparator event.
Definition ADC.h:65
@ Timer0CompareMatchA
3 - Timer0 compare A event.
Definition ADC.h:67
@ FreeRunning
0 - Convert continuously.
Definition ADC.h:64
@ Timer0Overflow
4 - Timer0 overflow.
Definition ADC.h:68
@ Timer1Overflow
6 - Timer1 overflow.
Definition ADC.h:70
@ Timer1CompareMatchB
5 - Timer1 compare B event.
Definition ADC.h:69
@ ExternalInterrupt0
2 - INT0 event.
Definition ADC.h:66
@ normal_conversion_time_min_us_at_1mhz
Normal conversion time min us at 1mhz.
Definition ADC.h:99
@ internal_reference_nominal_mv
Nominal internal reference (mV).
Definition ADC.h:94
@ recommended_clock_min_hz
Recommended clock min (Hz).
Definition ADC.h:95
@ max_external_channel_count
Maximum external inputs across packages.
Definition ADC.h:90
@ normal_conversion_time_max_us_at_50khz
Normal conversion time max us at 50khz.
Definition ADC.h:100
@ resolution_bits
Converter result width (bits).
Definition ADC.h:88
@ external_channel_count
External inputs exposed by the selected package.
Definition ADC.h:91
@ max_result
Maximum 10-bit result.
Definition ADC.h:89
@ electrical_clock_max_hz
Electrical clock max (Hz).
Definition ADC.h:97
@ recommended_clock_max_hz
Recommended clock max (Hz).
Definition ADC.h:96
@ normal_conversion_cycles
ADC clock cycles per conversion.
Definition ADC.h:92
@ recommended_source_impedance_max_ohms
Recommended maximum source impedance (ohms).
Definition ADC.h:98
@ max_sample_rate_at_max_resolution_sps
Max sample rate at max resolution sps.
Definition ADC.h:103
@ first_conversion_cycles
ADC cycles for first conversion.
Definition ADC.h:93
@ first_conversion_time_min_us_at_1mhz
First conversion time min us at 1mhz.
Definition ADC.h:101
@ first_conversion_time_max_us_at_50khz
First conversion time max us at 50khz.
Definition ADC.h:102
Reference
ADC voltage-reference selections.
Definition ADC.h:54
@ Internal1V1
3 - Internal nominal 1.1 V reference.
Definition ADC.h:58
@ AREF
0 - External reference on AREF.
Definition ADC.h:55
@ AVCC
1 - Analog supply voltage reference.
Definition ADC.h:56
@ Reserved
2 - Reserved; do not select.
Definition ADC.h:57
static constexpr float automotive_max_absolute_accuracy_lsb_at_200khz
Definition ADC.h:133
Device-specific definitions for the ATmega328P.
Definition ADC.h:14