208
Atmel ATmega16/32/64/M1/C1 [DATASHEET]
7647K–AVR–12/13
Example 1:
ADMUX = 0xED (ADC3 – ADC2, 10x gain, 2.56V reference, left adjusted result)
●
Voltage on ADC3 is 300mV, voltage on ADC2 is 500mV.
●
ADCR = 512
× 10 × (300 – 500) / 2560 = –400 = 0x270
●
ADCL will thus read 0x00, and ADCH will read 0x9C.
Writing zero to ADLAR right adjusts the result: ADCL = 0x70, ADCH = 0x02.
Example 2:
●
ADMUX = 0xFB (ADC3 – ADC2, 1x gain, 2.56V reference, left adjusted result)
●
Voltage on ADC3 is 300mV, voltage on ADC2 is 500mV.
●
ADCR = 512
× 1 × (300 – 500) / 2560 = –41 = 0x029.
●
ADCL will thus read 0x40, and ADCH will read 0x0A.
Writing zero to ADLAR right adjusts the result: ADCL = 0x00, ADCH = 0x29.
18.8
Temperature Measurement
The temperature measurement is based on an on-chip temperature sensor that is coupled to a single ended ADC input.
MUX[4..0] bits in ADMUX register enables the temperature sensor. The internal 2.56V voltage reference must also be selected
for the ADC voltage reference source in the temperature sensor measurement. When the temperature sensor is enabled, the
ADC converter can be used in single conversion mode to measure the voltage over the temperature sensor.
As shown
Figure 18-14 on page 209, the temperature sensor is followed by a driver. This driver is enabled when ADMUX value
of this driver is approximately 2S. Therefore two successive conversions are required. The correct temperature measurement
will be the second one.
One can also reduce this timing to one conversion by setting the ADMUX during the previous conversion. Indeed the ADMUX
can be programmed to select the temperature sensor just after the beginning of the previous conversion start event and then
the driver will be enabled 2S before sampling and hold phase of temperature sensor measurement. See
Section 18.5Table 18-2. Correlation Between Input Voltage and Output Codes
VADCn
Read code
Corresponding decimal value
VADCm + VREF /GAIN
0x1FF
511
VADCm + 0.999 VREF /GAIN
0x1FF
511
VADCm + 0.998 VREF /GAIN
0x1FE
510
...
VADCm + 0.001 VREF /GAIN
0x001
1
VADCm
0x000
0
VADCm - 0.001 VREF /GAIN
0x3FF
-1
...
VADCm - 0.999 VREF /GAIN
0x201
-511
VADCm - VREF /GAIN
0x200
-512