Setting incorrect fuses may render the AVR useless. Usually this can be repaired using a high-voltage programmer.
These setting may have errors or be incorrect for your project - check them and use at your own risk.
Making the reset pin and I/O pin means you can no longer use ISP. Selecting a clock mode you don't have the hardware for also kills ISP. Usually you can feed in external clock to recover. Invalid clock modes will also ruin your day.
The fuse setting are NOT the same for different chips. In particular the mega168 and mega328 fuses are different even thought the devices are pin compatible and very similar in other ways.
I find fuse information very hard to follow in the atmel data sheet (Rev. 8025Iâ€“AVRâ€“02/09). The information is not in one place, three devices are covered and having "0" as the "programmed" state confuses me and probably confuses others as well.
The kanda ISP software lets to set the fuses by function instead of hex bytes but unfortunately it does not support the 328.
It also doesn't support my USB pocket programmer - I like use this because it can supply power to the AVR.
Mostly I use AVRDUDE with AVRDUDE-GUI - this need hex bytes for fuses.
Arduino pro m328 factory fuse settings - DA FF 05 3C
Factory setting for the Uno are D8 FF 05 3F
The settings I use for the m328 pro and pro mini are D2 FF 05 2F
This *should* mean - a 2K byte boot block and resonator (or xtal?). Supply is 5V and clock 16meg.
The brown out detector (BOD) is set to 2.7 volts.
For m328's using internal RC my fuses are D2 D2 05 2F
I'm not sure these settings are correct.
My fuse settings are DF E2 FF
Clock is internal RC @ 8mhz.
USERID = 0xFF WDWP = 8KCLK WDP = 8KCLK DVSDON = [ ] BOOTRST = BOOTLDR BODPD = DISABLED RSTDISBL = [X] SUT = 0MS WDLOCK = [X] BODACT = DISABLED EESAVE = [X] BODLVL = 1V6 FUSEBYTE0 = 0xFF (valid) FUSEBYTE1 = 0xAA (valid) FUSEBYTE2 = 0xBF (valid) FUSEBYTE4 = 0xED (valid) FUSEBYTE5 = 0xF7 (valid)