can't use arduino as isp

Hi all!

I've run into a really weird problem recently:

Normally, I use my arduino uno r3 as an isp to program my other AVR chips (usually an attiny84) but for some reason, I can't program an atmega168 or an atmega328!

I keep getting an invalid device signature (usually either all 0s or all Fs, but sometimes a combination). My connections are fine, I checked them a hundred times, and when I rewire it to the attiny84, everything's alright. It just won't work with the 168 or 328 though. I've even tried 2 different 328 chips. Does anybody know what could be happening here?

Thanks!

Assuming the chips are new, have you burnt a bootloader first to set the fuses.

I've messed around with the fuses on the 168, but the 328s have the bootloader burnt. Nothing changes when I add a 16MHz crystal though...

Apart from suggesting following this http://arduino.cc/en/Tutorial/ArduinoISP and remembering to put a capacitor across reset & ground on your UNO after uploading ArduinoISP sketch and then copy/pasting error messages into your next message.