If you're using an external reference on the AREF pin, you must set the analog reference to EXTERNAL before calling analogRead(). Otherwise, you will short together the active reference voltage (internally generated) and the AREF pin, possibly damaging the microcontroller on your Arduino board.
So can I say that the AREF pin & active reference voltage(what does active mean?) ALWAY short together if not set the analog reference to EXTERNAL??
That comes a question why short the AREF pin & active reference voltage when ARFE pin is floated?
The AREF pin only be used when external voltage connect to it ,right?
In the datasheet are nice pictures that explains it.
Open the PDF file, the "Complete" version : http://www.atmel.com/devices/atmega328p.aspx
Page 306, Figure 28-1.
Inside the microcontroller (for example the ATmega328P on the Arduino Uno board) a reference is used for the 10-bits ADC for the analog inputs. That reference can be an internal voltage (Vcc or 1.1V voltage reference) or external.
When an internal voltage is selected, that voltage will be connected to the AREF pin.
Default the 5V is selected, and that means that default the AREF is connected to the internal 5V.
Only when EXTERNAL is selected, the AREF pin is "floating" (it is not), and an external voltage can be connected.
The AREF pin has an internal resistor of about 32k from the AREF pin to GND. That means it is not really floating. There is minimal voltage for reference. That means that selecting EXTERNAL and connect nothing to AREF will not work for the ADC.
Page 375, minimum reference voltage : 1.0V, maximum : AVcc.
The minimum voltage is 1.0V for which all specifications in the datasheet are valid.
I don't know if someone tried with a lower voltage to test how low it can be.
If you think about it, the AREF pin can be used for many things, when using it in the wrong way. It can be some kind of (weak) output, or extra analog input. Changing between internal 5V and 1.1V also changes the AREF pin output voltage between 1.1V and 5V and the AREF voltage can be measured by setting the internal mux in some way (I forgot in which way). There are probably a few more silly things to do with AREF, but stay away from it
Ok,I see it , pretty clear!
I noticed the ADC_X pins up to 8,the real situation is 6 pins of ADC on the UNO board,I assumes they abandon the last 2 pins.
The Uno has the PDIP version of the ATmega328P without A6 and A7, but every ATmega328P has the same chip die inside. Even the Uno has A6 and A7, and if I read them, then noise from them can be read. The noise even changes when I hold my finger on the chip.
I'm not sure if the Arduino IDE allows A6 and A7 for an Arduino Uno, but it is possible by setting the internal mux with direct register writing.
If you like these kind of things, then there is also a temperature sensor inside the ATmega328P, and it can read the voltage of its own Vcc.