73
ATmega103(L)
0945G–09/01
Operation
The ADC operates in Single Conversion mode, and each conversion will have to be ini-
tiated by the user.
The ADC is enabled by writing a logical “1” to the ADC Enable bit, ADEN in ADCSR.
The first conversion that is started after enabling the ADC will be preceded by a dummy
conversion to initialize the ADC. To the user, the only difference will be that this conver-
sion takes 13 more ADC clock pulses than a normal conversion (see Figure 48).
A conversion is started by writing a logical “1” to the ADC Start Conversion bit, ADSC.
This bit will stay high as long as the conversion is in progress and be set to zero by hard-
ware when the conversion is completed. If a different data channel is selected while a
conversion is in progress, the ADC will finish the current conversion before performing
the channel change.
As the ADC generates a 10-bit result, two data registers, ADCH and ADCL, must be
read to get the result when the conversion is complete. Special data protection logic is
used to ensure that the contents of the data registers belong to the same result when
they are read. This mechanism works as follows:
When reading data, ADCL must be read first. Once ADCL is read, ADC access to data
registers is blocked. This means that if ADCL has been read, and a conversion com-
pletes before ADCH is read, none of the registers are updated and the result from the
conversion is lost. When ADCH is read, ADC access to the ADCH and ADCL registers
is re-enabled.
The ADC has its own interrupt, ADIF, which can be triggered when a conversion com-
pletes. When ADC access to the data registers is prohibited between reading of ADCL
and ADCH, the interrupt will trigger even if the result is lost.
Prescaling
Figure 46.
ADC Prescaler
The ADC contains a prescaler, which divides the system clock to an acceptable ADC
clock frequency. The ADC accepts input clock frequencies in the range 50 - 200 kHz.
Applying a higher input frequency will result in poorer accuracy (see “ADC DC Charac-
teristics” on page 78).
The ADPS0 - ADPS2 bits in ADCSR are used to generate a proper ADC clock input fre-
quency from any XTAL frequency above 100 kHz. The prescaler starts counting from
the moment the ADC is switched on by setting the ADEN bit in ADCSR. The prescaler
7-BIT ADC PRESCALER
ADC CLOCK SOURCE
CK
ADPS0
ADPS1
ADPS2
CK/128
CK/2
CK/4
CK/8
CK/16
CK/32
CK/64
Reset
ADEN