Skip to main content

m328p Fuse Bit 设置

Fuse 基本概念

Low Fuse

ATmega328P 的 Low Fuse Byte(低位熔丝字节)一共有 8 个 bit(bit7 - bit0),主要控制时钟源,启动时间以及是否输出时钟等功能。

Bitbit7bit6bit5bit4bit3bit2bit1bit0
Fuse Bit NameCKDIV8CKOUTSUT1SUT0CKSEL3CKSEL2CKSEL1CKSEL0
Default Value01100010

0x62 1 MHz 8 分频 默认Hex

0xe2 8 MHz 不分频

0xff 16MHz 外部晶振

High Fuse

ATmega328P 的 High Fuse Byte(高位熔丝字节)一共有 8 个 bit(bit7 - bit0),主要控制 Bootloader 大小 / 启动方式 / SPI 烧录使能 / EEPROM 保存等功能。

Bitbit7bit6bit5bit4bit3bit2bit1bit0
Fuse Bit NameRSTDISBLDWENSPIENWDTONEESAVEBOOTSZ1BOOTSZ0BOOTRST
Default Value11011111
warning

错误的配置 SPIEN 会导致无法写入

Extended Fuse

TODO

读取 Fuse Bit

使用 usbasp

avrdude -c usbasp -p m328p -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

使用 arduino as isp

avrdude -c avrisp -P /dev/serial/by-id/xxx -b 19200 -p m328p -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

写入 Fuse Bit

使用 0xe2 作为 example。内部RC 振荡器 8 MHz 不分频。

使用 usbasp

配置Low Fuse
avrdude -c usbasp -p m328p -U lfuse:w:0xe2:m

使用 arduino as isp

配置Low Fuse
avrdude -c avrisp -P /dev/serial/by-id/xxx -b 19200 -p m328p -U lfuse:w:0xe2:m