DIY Electronics
— Building circuits, programming microcontrollers, and making things blinkBuilding a soil moisture sensor array for a smart garden
ATmega Fuse Bit Guide
ATmega fuse bits are one of those things that are easy to get wrong and hard to recover from without the right tools. Here's the essential knowledge.
Fuse bits are inverted — a 0 means the feature is enabled, a 1 means disabled. This is counterintuitive and catches almost everyone the first time. The CKDIV8 fuse (divides the clock by 8) is set (enabled, value=0) by default, meaning a freshly programmed ATmega328P runs at 1MHz, not 8MHz. This surprises people wondering why their sketch runs 8x slower than expected.
The SPIEN fuse enables SPI programming — never clear this unless you have a parallel programmer available. If you accidentally set RSTDISBL (converts RESET pin to GPIO), you can only recover with a 12V parallel programmer. Before changing fuses, use an AVR fuse calculator to verify your byte values. Write fuse bytes before any other programming — if it goes wrong, you want a blank chip, not a partially programmed one.