This is a quick summary of how to burn Arduino Uno bootloader to a blank Atmega328P-PU using Arduino Uno as ISP.
Arduino IDE: Version 1.6.5
Make sure to turn on Show verbose output during compilation and upload. This will greatly help us to understand what's going on during these 2 stages.
Note: The 2 capacitors next to the 16MHz crystal cannot be 100nF (it won't work).
Loading ArduinoISP sketch into Arduino Uno
Make sure the type of the board that will be running Arduino ISP is correctly set (in this case, Arduino Uno). Also, make sure the COM port is correctly set (in this case, COM10).
Compile and upload the sketch to Arduino Uno.
After the sketch is successfully compiled and uploaded, the message in the Text Console will look like the one below.
The whole configuration will be looking like the photo below. On the breadboard, the LED to the left is the heartbeat indicator.
Note, In the photo above, there is a 10uF capacitor connected between pin 1 (RESET) of the blank Atmega328P-PU and GND. This capacitor can be removed and it won't affect the burning of the bootloader.
Burning Bootloader to Blank Atmega328P-PU:
1. Select the type of the target board where the bootloader will be written to:
Since we want to burn Arduino Uno bootloader to the blank Atmega328P-PU on the breadboard, we need to select Arduino Uno.
2. To use Arduino Uno as the ISP, select Arduino as ISP.
3. Select "Burn Bootloader" to start the burning process.
During the burning process, the programming LED (the one to the right) will flash several time.
Note that in the above photo, there is no capacitor connecting pin 1 (RESET) of the blank Atmega328P-PU to GND.
After the process is successfully complected, the Text Console output will look like the one below.
That's it. The blank Atmega328P-PU now has Arduino Uno bootloader in it and is ready for projects.