Ok, so just for experimentation (and a possible actual future implementation) I did a little experiment today.
And just a quick note, this was my first time using the 'Pocket AVR Programmer' from Sparkfun. I've always used the usual method of programming the Arduino/ATMega328 - uploading sketches with my actual Arduino Duemilanove hooked up to my computer via a regular USB cable.
So here's what I did:
I uploaded the basic 'Blink' sketch 'using programmer' on a fresh ATMega328 (from Digikey, no Arduino bootloader yet) with Sparkfun's 'Pocket AVR Programmer', in Arduino IDE 1.6.5, by following the instructions at:
This seemed to have work fine. However, it didn't seem to actually run right – instead of doing a 1 second blink, it ran at a much slooower rate – like it was blinking @ 10 seconds (on 10, then off 10, on 10, etc.) (I don't know for sure what the timing was as I didn't actually time it, but it was very sloowww) or something.
Then I burned the Arduino bootloader as described in that same article (still had the Duemilanove hooked up to the Pocket AVR Programmer), which seemed to go successfully.
Then, I removed the Pocket AVR Programmer, then connected the Arduino Deumilanove up to the computer the usual way - with my usual USB cable, and uploaded the 'Blink' sketch, which went successfully. Now the sketch seems to be working properly – blinking every 1 second.
Next, I uploaded the same sketch again, but this time had it hooked back up with the Pocket AVR Programmer again, to which it was uploaded successfully. Strangely, the sketch also seemed to run properly – blinks the LED every 1 second it appears! What the heck? I thought ok, maybe it didn't actually upload properly or something. So as a test, I tried changing the delay for the blink to 2 seconds just to make sure that it was actually uploading, and it seemed to have uploaded properly. It also seemed to have ran properly (performed the 2 second blink)
So it seems like there's something up with the chip when it comes from the factory, and it doesn't get 'fixed' until the Arduino bootloader is uploaded to it?
Hopefully I explained this ok.