I have a duemilanove which originally had a 168. I have some ATMEGA328 P chips and I've put one into the duemilanove. I am using a Uno as a programmer for the duemilanove. I am running Arduino 1.8.2 on a PC which I understand doesn't need a capacitor installed on the Uno. I've uploaded the sketch which makes the Uno an ISP, I have edited the avrdude.conf file, have wired up in accordance with http://www.crash-bang.com/resource/bootload-atmega328/ and the tutorial on this site. When I run burn bootloader using the preferences set to verbose, the returned signature is correct for the P version of the chip I believe (0x95 0x14) and this is the value I have put into the avrdude.conf file. However, avrdude is still insisting it is expecting to receive 0x95 0x0F and will not burn the bootloader. I have no idea where it is getting this value from (I've even tried editing the iom328p.h file...). Any ideas?
The signature bytes are:
ATmega328 0x1E 0x95 0x14
ATmega328P 0x1E 0x95 0x0F
So it looks you have the wrong bytes for the 328P.