So in a nutshell the 328 works from ISP but not from ICSP using the FTDI cable from Sparkfun.
The problem is the cable.
Also from Sparkfun's website:
https://www.sparkfun.com/products/9717" Originally, the cable was designed to have 3.3V VCC, however something was lost in translation between SparkFun and our supplier and we got stuck with a whole bunch of FTDI cables that have a slight mix up in wiring. These have 5V VCC, and 3.3V I/O. "
Also: "The FTDI Basic uses DTR to cause a hardware reset where the FTDI cable uses the RTS signal."
So not the best cable to begin with.
avrdude does a logical OR to RTS and DTR - making them the same.
http://www.deanmao.com/2012/08/12/fixing-the-dtr-pin/I use a CP2102 based USB to serial adapter for FTDI comms.
Here is the pinouts and connections as on the boards
m328 CP2101
-----------------------
DTR DTR
RX TX
TX RX
VCC 5V
GND CTS (not con)
GND GND
Note that CTS on the CP2102 is not connected.
You would do m328 DTR to cable RTS
Exactly how are you connected?
Does your M328 get power?
is it correct? (not 3v3 by mistake)
I always add an LED for power.
Also in the Arduino IDE you must select the board, the CPU, and CPU clock speed.
In my case I use Pro-minis, both 3v3 and 5V, and 8 and 16MHz.
If you select the wrong clock, serial comms will not work (garbage), although programming will.
Mick M