I never really paid much attention to the crazy naming of the Atmega chips. Yesterday i was on mouser trying to buy some atmega328 when i came across Atmega328 which cost $2.82 each and the Atmega328P which cost $3.50 each. So it got me thinking…why the price difference? So i went digging a bit and here is what i found. Hopefully this info will help.
1 : Atmega328P and Atmega328 are the same every sense architecturally. So you can just drop in a 328p in place of a 328 and vice versa.
2: Atmega328P just consumes lower power than Atmega328. Look up the numbers in the datasheet. This means that the 328P is manufactured in a finer process than the 328. Ex: 328 could be a 90nm process and 328P could be a 60nm process. So yes, you are paying a little more for the finer process that would save you couple of microamps of power. If that is important to you, then go with the 328P.
3: The chip signatures of 328P and 328 are different. So if any program is reading these signatures to make a decision (like avrdude in arduino), then you will have to watch out as the software could complain saying that the wrong chip was used.
4: Point (2) above is also confirmed by the fact that TQFP package variant of the chip is available only in 328P and not 328. That is because you need a finer process to get a smaller chip die to fit in a smaller package like the TQFP.
So there you go. You want a slightly cheaper price for your chip and dont mind burning a extra mA or two, then go with the 328. But if you want to save some power or if you want the SMD version of the chip, then it is 328P for you.