Low level documentation

Hello, I want to learn the Ardiono from the base. I mean, not just using libraries such as servos etc, but to be able to understand what it does from inside,
and to be able to programming it by myself. Making my own interruption handling from devices connected etc. (Not ASM code of cource)
What should I read? I have seen here the learning foundations or hacking but didnt find the needed information.

Start here:

AVR-LIBC: avr-libc: Modules
ATmega328P: http://www.atmel.com/Images/doc8271.pdf

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

RuggedCircuits:
Start here:

AVR-LIBC: avr-libc: Modules
ATmega328P: http://www.atmel.com/Images/doc8271.pdf

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

Thank you for your answer.
As I understood, this is about the CPU inside the Arduino and about the library. How about the information of the general structure, like, CPU + peripheri + rules to make settings to the peripherial devices, etc?

The ATmega328P datasheet does have the answers on the general structure of the CPU, its peripherals, and all the bits in all the registers used to control its operation.

--
The Flexible MIDI Shield: MIDI IN/OUT, stacking headers, your choice of I/O pins

RuggedCircuits:
The ATmega328P datasheet does have the answers on the general structure of the CPU, its peripherals, and all the bits in all the registers used to control its operation.

--
The Flexible MIDI Shield: MIDI IN/OUT, stacking headers, your choice of I/O pins

Thank you very much!

RuggedCircuits:
Start here:

AVR-LIBC: avr-libc: Modules
ATmega328P: http://www.atmel.com/Images/doc8271.pdf

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

Almost done with the documentation about ATmega328P.
Thank you for links.
I have another question, I am planning to use USB in order to send/receive data from PC/Smartphone. I have found also that Arduino UNO includes the USB Serial Light Adapter.
Which can be used for the purpose of sending/receiving data from PC via USB connection. But I couldn't find this information in the document above.
Do you know what documentation should I read in order to be able to use the USB Serial Light Adapter (also low level if possible)?

Probably my Arduino UNO goes with built in ATmega8U2.

It is written in the web site about the Arduino UNO, that:
"Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip."

Here I am a little bit confused

  1. Does the ATmega8U2 function like a USB to Serial chip?
  2. Does the RX and TX Pins always work through USB? If no how do I choose the way they work?
    For example I have connected the LED between TX and GND pin, and it worked when I was sending some data through it.
    Was the connection through USB?
    Is there any good documentation explaining it?
  3. Can I programm the ATmega8U2 independently of ATmega328P?