8 temperature measurement – Rainbow Electronics ATmega64M1 User Manual
Page 238
238
8209A–AVR–08/09
ATmega16M1/32M1/64M1
Example 1:
– ADMUX = 0xED (ADC3 - ADC2, 10x gain, 2.56V reference, left adjusted result)
– Voltage on ADC3 is 300 mV, voltage on ADC2 is 500 mV.
– 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 300 mV, voltage on ADC2 is 500 mV.
– 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.
22.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 con-
verter can be used in single conversion mode to measure the voltage over the temperature
sensor.
, the temperature sensor is followed by a driver. This driver is enabled
when ADMUX value selects the temperature sensor as ADC input
The propagation delay of this driver is approximatively 2µS. Therefore
two successive conversions are required. The correct temperature measurement will be the sec-
ond 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 2 µS
before sampling and hold phase of temperature sensor measurement. See “Changing Channel
or Reference Selection” on page 230.
Figure 22-15. Temperature Sensor Block Diagram
Temperature
Sensor
ADC
Input
Multiplexer
ADMUX
to sampling
and hold
G=1
Enable when
ADMUX = Temp. Sensor input